Страница: 1 |
Страница: 1 |
Вопрос: ADO
Добавлено: 17.07.07 18:04
Автор вопроса:
fuzytsfcrew | Web-сайт:
мне нужно с одной таблици (baza: number, name, profession, ceh, rozryad, trudoemkost)
скопировать нужные поля (profession, ceh, rozryad, trudoemkost) записи
в другую (out: profession, ceh, rozryad, trudoemkost, zarplata)
с критерием WHERE ceh=' & Combo1.Text'
засовываю нужные мне данные в новый recordset и пихаю в другой, а оно матерится, что объект закрыт.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: EUGY
Вопросов: 0
Ответов: 454
Профиль | | #1
Добавлено: 17.07.07 18:13
Базы разные? если нет, то все выполняется одним SQL-запросом, если да, то в цикле послать insert into.
Номер ответа: 2
Автор ответа: EUGY
Вопросов: 0
Ответов: 454
Профиль | | #2
Добавлено: 17.07.07 18:28
....
cnnDBF.ConnectionString = ...
cnnDBF.Open
cnnMDB.ConnectionString= ...
cnnMDB.Open
....
Dim cmd As New ADODB.Command
Dim ar() As Variant
Dim i As Integer
ar() = cnnDBF.Execute("SELECT profession, ceh, rozryad, trudoemkost FROM baza ORDER BY number".GetRows
cmd.CommandText = "INSERT INTO MyTab (profession, ceh, rozryad, trudoemkost) VALUES ( q1,q2,q3,q4) "
For i = 0 To UBound(ar(), 2)
cmd.ActiveConnection = cnnMDB
cmd.Execute , Array(ar(0, i), ar(1, i), ar(2, i), ar(3, i))
Next
Номер ответа: 3
Автор ответа: EUGY
Вопросов: 0
Ответов: 454
Профиль | | #3
Добавлено: 17.07.07 18:32
" ... WHERE ceh=' & Combo1.Text & '"
Номер ответа: 4
Автор ответа: fuzytsfcrew
ICQ: 314339
Вопросов: 30
Ответов: 102
Web-сайт:
Профиль | | #4
Добавлено: 18.07.07 08:30
База одна. Называется она - norm.mdb
нужно с одной табл. в другую.
Номер ответа: 5
Автор ответа: fuzytsfcrew
ICQ: 314339
Вопросов: 30
Ответов: 102
Web-сайт:
Профиль | | #5
Добавлено: 18.07.07 10:24
Решил по записи действовать, чтоб прогресс бар можно было подрубить, а оно не пашет. Что не так?
Dim sConnection1 As ADODB.Connection
Dim sRecordset1 As ADODB.Recordset
Dim nomerceha As String
Set sConnection1 = New ADODB.Connection
sConnection1.CursorLocation = adUseClient
sConnection1.Mode = adModeReadWrite
sConnection1.Open "Provider=Microsoft.Jet.OLEDB.4.0ata Source=c:\NormForm\Data\norm.mdb;Persist Security Info=False"
Set sRecordset1 = New ADODB.Recordset
nomerceha = CStr(Combo1.Text)
sRecordset1.Open "SELECT * FROM baza WHERE ceh LIKE' & nomerceha'", sConnection1, adOpenDynamic, adLockOptimistic, adCmdUnknown
Dim sConnection2 As ADODB.Connection
Dim sRecordset2 As ADODB.Recordset
Set sConnection2 = New ADODB.Connection
sConnection2.CursorLocation = adUseClient
sConnection2.Mode = adModeReadWrite
sConnection2.Open "Provider=Microsoft.Jet.OLEDB.4.0ata Source=c:\NormForm\Data\norm.mdb;Persist Security Info=False"
Set sRecordset2 = New ADODB.Recordset
sRecordset2.Open "SELECT * FROM out", sConnection2, adOpenDynamic, adLockOptimistic, adCmdUnknown
With sRecordset1
Do Until .EOF
sRecordset2.AddNew
sRecordset2.Fields("profession".Value = .Fields("profession"
.Value
sRecordset2.Fields("ceh".Value = .Fields("ceh"
.Value
sRecordset2.Fields("rozryad".Value = .Fields("rozryad"
.Value
sRecordset2.Fields("trudoemkost".Value = .Fields("trudoemkost"
.Value
.MoveNext
Loop
End With
Номер ответа: 6
Автор ответа: fuzytsfcrew
ICQ: 314339
Вопросов: 30
Ответов: 102
Web-сайт:
Профиль | | #6
Добавлено: 18.07.07 10:55
пишет, что текущий Recordset не потдерживает обновление run-time error '3251'
Номер ответа: 7
Автор ответа: EUGY
Вопросов: 0
Ответов: 454
Профиль | | #7
Добавлено: 18.07.07 17:35
sConnection2.Execute "INSERT INTO out (profession, ceh, rozryad, trudoemkost) SELECT profession, ceh, rozryad, trudoemkost FROM baza WHERE ceh ... "
Как бы и все.
Но поскольку в критерии запроса используется строка, лучше использовать параметрический запрос.