DataBase

9 отговора 344 прегледа
#1

DataBase

Такаааа,
Въпрос:
Как да копирам съдържанието от една таблица(A) в друга(B),като:
А.полетата в 2-те таблица са еднакви
Б.в (B) имам повече,където те са производни от 1-та(A)
2.Как да "обходя" всички записи в дадена таблица с while .....wend
всяко предложение ще бъде ценно
(На само четящите)Весели празници(Както и на пишещите....братя)


Отговор
в отговор на ToViDebne #2

10x to All

Благодаря на всички за отговорите...
А някой да знае как да си стартирам VB-то ?!

Отговор
в отговор на ToViDebne #3

Re: 10x to All

Sorry. Празници са. Няма много народ по клубовете, освен няколко спамери в клуб "Физика". Тук сигурно ще се пооправи след 5-ти, пък аз като не знам какво да ти отговоря, затова не се обаждам по темата ти.

Ще се оправим. Работя по нова подредба на първата тема, ще събираме малко по-отбрана информация.

----------------------------------
помислих, хареса ми, помислих пак...
Отговор
в отговор на ToViDebne #4

Re: 10x to All

:))))))))))
Аз знам как да си стартирам мойто VB само не знам дали метода ще работи и при теб - правя го с двойно натискане върху фаила с име VB6.EXE :)))

А по въпроса с базата с данни. Правих навремето нещо такова и изглеждаше по следния начин:

Приемам че таблицата от която ще вземаш инфото се казва Table_Source а другата Table_Dest като Table_Source има полета Field_1, Field_2, Field_3 и Field_4 (само пример ве, не ми се хили :)))

INSERT INTO Table_Dest (Field_1,Field_2,Field_3,Field_4) SELECT * FROM Table_Source

Сега, може и да греша в точния синтаксис но така го правих преди - това което трябва да се вкара се задава като друго Query - в случая SELECT * FROM Table_Source -може да се наложи това последното да е в скоби.

Другия начин е по-бавния и той се състои в избирането на всички записи от Table_Source и след това един по един тези записи да се INSERT INTO Table_Dest:

Set rsRecordset=conConnection.Execute("SELECT * FROM Table_Source")

Do While Not rsRecordset.Eof
conConnection.Execute("INSERT INTO Table_Dest (Field_1,Field_2,Field_3,Field_4) VALUES (" & rsRecordset.Field(0).Value & "," & rsRecordset.Field(1).Value ......")
rsRecordset.MoveNext
Loop

Благодаря за търпението... :))))

Отговор
в отговор на Гeoprи #5

Re: 10x to All

Уффффф,най-после нещо смислено....бях се отчаял вече....
по т.1:
докато стигна до ВБ-ексе/то и килимчето на мишката ми свършва.'ко да правя сега ?!
по т.2:
не става(или поне при мен) защото:
do while...loop и while...wend операторите вършат една и съща работа...и по-точно....като тръгнат не могат да се спрат,демек зацикля
според мен трябва да е с for.....next с rs.recordcount помежду
ама вече съм се спекъл и говоря само глупУсти
мисля,че трябва да е нещо такова

Dim i As Long

For i = 1 To rs.RecordCount
rs.Fields(i).Value = Text(i).Text
If rs.Fields(i).Value = Text(i).Text Then
i = rs.RecordCount

Else
rs.MoveNext
End If
Next i


Отговор
в отговор на ToViDebne #6

Re: 10x to All

по т.1 - В магазина видях да се продават новите XXL килимчета.

по т.2 - Нещо не ми се чини да е читав кода.
Но Do ... Loop си има условие, и то може да е - цикъла, до край на записите. Но така или иначе трябва да има променлива за номера на записа, така че с For...Next май ще е по-четливо, щом знаем броя записи.

----------------------------------
помислих, хареса ми, помислих пак...
Отговор
в отговор на Щиpлиц #7

Re: 10x to All

по т.1 с XXL килимче съм...какво следва...?
по т.2
на мен ми изглежда добре,ама май не е
сигурен съм ,че изпускам нещо елементарно
както и да е.....
Весело посрещане на Новата Година!

Отговор
в отговор на Щиpлиц #8

прав си


Do Until rs.EOF = True
rs.Fields(i).Value = Text(i).Text
If rs.Fields(i).Value = Text(i).Text Then
rs.MoveNext
End If
Loop

бачка си като пушка

Отговор
в отговор на ToViDebne #9

Re: 10x to All

С For..... Next е по-кофти, според мене.
Най-добре е да обходиш записите така както ти е обяснил Георги с while...loop, но с някои малки забележки
Преди реда:
Do While Not rsRecordset.Eof
трябва задължително да има:
rsRecordset.MoveFirst
А щом има "rsRecordset.MoveFirst" трябва да има и проверка за наличието на някакви записи в таблицата. Или Error trapping.
Проверката става чрез rsRecordset.Eof и rsRecordset.Bof. Ако няма записи в таблицата, те и двете са True.
И така горе-долу кода за обхождане на рекордсет би изглеждал по следния начин:

If Not(rsRecordset.Eof And rsRecordset.Bof) Then
rsRecordset.MoveFirst
Do While Not rsRecordset.Eof
'тук правиш, квот ще правиш

rsRecordset.MoveNext
Loop
End If

А ето ти един линк конкретно по твоят проблем, който може би върши някаква работа.

[линк]

Не казвам, че това е най-доброто, но за сметка на това ми спестява доста обяснения и време, което щях да загубя, за да напиша код по проблема. А пък спестеното време ще го оползотворя по подготовка за по посрещането на Новата година

Честита Нова Година!

Бии, за да те уважават!
Отговор
в отговор на пpoГЪPMИcт #10

Re: 10x to All

Пък на мен ми се губинякъде нещо по кодовете като чели много сложно го правите.
Има значение според мен с какво си достъпваш базата дали с дао или адо.

Наведи главата защото прелитам ниско с асконата !!!
Отговор