powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в инструкции update при выполнении операций с dbf через ADO
39 сообщений из 39, показаны все 2 страниц
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35727760
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, люди добрые!
Необходимо сравнить 2 файла с различной структурой (в одной урезаны некоторые поля)
есть код:

Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & s & ";" & "DefaultDir=" & s & "\"
conn.Open
Set Rst = New ADODB.Recordset
s3 = "SELECT * FROM " & s2
Rst.Open s3, conn, dbOpenStatic, adLockOptimistic

Set conn2 = New ADODB.Connection
conn2.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & ss & ";" & "DefaultDir=" & ss & "\"
conn2.Open
Set rst2 = New ADODB.Recordset
ss3 = "SELECT * FROM " & ss2
rst2.Open ss3, conn2

Do Until Rst.EOF
s6 = Rst.Fields(0).Value
Do Until rst2.EOF
s7 = rst2.Fields(0).Value
If s6 = s7 Then
Rst.Fields(0).Value = "0"
Rst.update
End If
rst2.MoveNext
Loop
Rst.MoveNext
Loop

Rst.Close: Set Rst = Nothing
conn.Close: Set conn = Nothing
rst2.Close: Set rst2 = Nothing
conn2.Close: Set conn2 = Nothing


после обработки первой записи, выдается runtime error (80004005): Ошибка синтаксиса в инструкции Update.

По идее нужно запись удалить, но мне её обнулить хотя бы, чтобы потом запросом почистить строки, где поле с нулевым значением.

Как исправить не знаю... Может что с кодом в целом?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35727912
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) зачем два объекта типа ADODB.Connection, можно использовать одно и сделать сразу update или delete
2) Rst.Fields(0).Value = "0" скорее всего ошибка здесь. Видать, надо каждое поле по отдельности обрабатывать (присваивать)


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35727925
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятно почему два соединения, папки разные...тогда два конекшена надо

что возвращает rstN.Fields(0).Value ?

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35728893
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssss,
Код: plaintext
Rst.Fields( 0 ).Value = "0"
Есть предположение, что "0" - это string, а нужно число. Попробуй
Код: plaintext
Rst.Fields( 0 ).Value =  0 
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35729724
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема даже не в том, что он значения не меняет, а в том, что он обрабатывает только первую запись...вот...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35730147
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так
Код: plaintext
1.
2.
3.
conn2.BeginTrans
Rst.Fields( 0 ).Value = "0"
Rst.update
conn2.CommitTrans
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35730256
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

что оно делает?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35730268
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем получилось у меня всё, но приходиться делать rst2.requery каждый раз.
Поэтому процесс очень долгий.
(база сравниваемая=от 5 MB, база-справочник = 65MB(и будет больше))

Вопрос встает: Как сделать быстрее? Может работать через индексы? Тогда как?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35730343
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssss
(база сравниваемая=от 5 MB, база-справочник = 65MB(и будет больше))
Вопрос встает: Как сделать быстрее? Может работать через индексы? Тогда как?
Если есть первичный ключ, то можно
Код: plaintext
1.
conn2.Execute "Update " & ss2 & " Set " & rst2.Fields( 0 ).Name & "=0 where " '+условие ключа.

П.С.Написал бы ты обыкновенный SQL запрос а не мучался с курсором :)
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35730388
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, попробуй сменить провайдера на Microsoft.Jet.OLEDB.4.0

Что-то типа
Код: plaintext
1.
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
Может помочь.
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731368
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл, друг!
Вот серьёзно, делаю запрос, выдает runtime err 80004е005
Недостаточно параметров. Требуется 1. (это если "*" ставить)

а если поля конкретные, то цифра = количеству полей.

Может я что неправильно делаю?

(sql-запрос делаю там, где rst.open)
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731375
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конкретно вот как:


Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & s & ";" & "DefaultDir=" & s & "\"
conn.Open

Set Rst = New ADODB.Recordset
s3 = "SELECT * FROM " & s2
Rst.Open s3, conn, dbOpenStatic, adLockOptimistic

Do Until Rst.EOF

Set conn2 = New ADODB.Connection
conn2.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & ss & ";" & "DefaultDir=" & ss & "\"
conn2.Open

Set Rst2 = New ADODB.Recordset
ss3 = "Update " & ss2 & " Set NUMBER=0 where NUMBER=" & Rst.Fields(0).Value
Rst2.Open ss3, conn2

Rst2.Close: Set Rst2 = Nothing
conn2.Close: Set conn2 = Nothing
Rst.MoveNext
Loop
Rst.Close: Set Rst = Nothing
conn.Close: Set conn = Nothing


NUMBER= название изменяемого поля
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731397
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал так
conn2.Execute "Update " & ss2 & " Set number=0 where number=" & Rst.Fields(0).Name
пишет ошибку синтаксиса в инструкции "update"
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731430
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в предыдущем посте ошибка. там rst.fields(0).Value
думал что с типами данных, преобразовал всё в число через val().
требует параметр. Что делать?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731685
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так:

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
conn.Open
Set rst = New ADODB.Recordset
s3 = "SELECT * FROM " & s2
rst.Open s3, conn, dbOpenStatic, adLockOptimistic

Set conn2 = New ADODB.Connection
conn2.Provider = "Microsoft.Jet.OLEDB.4.0"
conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ss & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
conn2.Open
Set rst2 = New ADODB.Recordset
ss3 = "SELECT * FROM " & ss2
rst2.Open ss3, conn2 ' , dbOpenStatic, adLockOptimistic
Do Until rst.EOF
s6 = Val(rst.Fields(0))
Do Until rst2.EOF
s7 = Val(rst2.Fields(0))
If s6 = s7 Then
rst.Delete
rst.Update
GoTo 1
Else
rst2.MoveNext
End If
Loop
1:
rst2.Requery
rst.MoveNext
Loop
rst2.Close: Set rst2 = Nothing
conn2.Close: Set conn2 = Nothing
rst.Close: Set rst = Nothing
conn.Close: Set conn = Nothing


работает. 226 записей за 22 минуты.
Вопрос: Можно ли ускорить?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35731790
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно как-нибудь запрограммить так, чтобы создавался индекс большого файла, и программа использовала его? Ведь сравнивается, только одно поле...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35732142
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
    Dim conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sValue As String
    
    Set conn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    'выбираем значения для сверки
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
    conn.Open
    
    s3 = "SELECT MyField FROM " & s2
    
    rst.Open s3, conn, dbOpenStatic, adLockReadOnly
    
    sValue = rst.GetString(, , , "!")
        
    rst.Close
    conn.Close
        
    'удаляем лишнее в другой таблице
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ss & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
    conn.Open
    
    s3 = "SELECT * FROM " & ss2
    rst.Open s3, conn, adOpenKeyset, adLockBatchOptimistic
    
    Do Until rst.EOF
        If InStr( 1 , "!" + rst.Fields( 0 ) + "!", sValue) <>  0  Then
            rst.Delete
        End If
        
        rst.MoveNext
    Loop
    
    'сохраняем внесенные изменения
    rst.UpdateBatch
    
    'уничтожаем объекты
    rst.Close: Set rst = Nothing
    conn.Close: Set conn = Nothing

а по поводу кода, приведенного Вами, зачем делать каждый раз Requery? Да и обновление можно сделать скопом, если использовать ключ adLockBatchOptimistic

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35732159
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если файлы в одной директории, то, вероятно, можно будет одним SQL-запросом удалить ненужные строки


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35732473
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал код, приведенный выше. Не проходит из за длины получившейся строки(там 7-8 значные номера). Юзаю adlockbatch, выдает runtime 80004е15. Работа не выполнена (курсор на выполнении удаления записи). Пробую дальше.
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35732474
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запросы у меня не получаются....а жаль((((((((
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35732804
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпробовал код, приведенный выше. Не проходит из за длины получившейся строки(там 7-8 значные номера).
автор 226 записей

вообще-то в string очень много символов влезет

сколько вообще записей?

авторзапросы у меня не получаются....а жаль((((((((
что значит не получается?
ошибка, проблема с синтаксисом или что?

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35733043
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssss, c синтаксисом мы тебе поможем :)

Ты их в одну папочку положи, в тестовую, для простоты s . И сделай следующее

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & s & ";" & "DefaultDir=" & s & "\"
conn.Open

'обновление

conn.execute "update [" & ss2 & "] set [" & ss2 & "].[NUMBER]=0 where [" & ss2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from [" & ss2 & "] as t inner join [" & s2 & "] as tt on [t].[NUMBER] = [tt].[NUMBER])"


Или сразу

Код: plaintext
1.
2.
'удаление
conn.execute "Delete from [" & ss2 & "] where [" & ss2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from [" & ss2 & "] as t inner join [" & s2 & "] as tt on [t].[NUMBER] = [tt].[NUMBER])"

И посмотри, что получилось.
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35733917
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

Спасибо тебе огромное! Теперь я хоть понял как это делать!
Вроде сделал!
Проверяю!
О результатах позже...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35733927
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлDeViLsssss, c синтаксисом мы тебе поможем :)

Ты их в одну папочку положи, в тестовую, для простоты s . И сделай следующее

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & s & ";" & "DefaultDir=" & s & "\"
conn.Open

'обновление

conn.execute "update [" & ss2 & "] set [" & ss2 & "].[NUMBER]=0 where [" & ss2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from [" & ss2 & "] as t inner join [" & s2 & "] as tt on [t].[NUMBER] = [tt].[NUMBER])"


Или сразу

Код: plaintext
1.
2.
'удаление
conn.execute "Delete from [" & ss2 & "] where [" & ss2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from [" & ss2 & "] as t inner join [" & s2 & "] as tt on [t].[NUMBER] = [tt].[NUMBER])"

И посмотри, что получилось.


запрос можно проще сделать, inner join лишний как в ОБНОВЛЕНИИ, так и в УДАЛЕНИИ
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35733930
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл, не подскажешь, где найти литературу по sql в visual basice.
не получается вот что:

conn4.Execute "select [city].* from [city] where [city].[index]=" & Str(s)

пишет, что не хватает параметра. а какого не пойму...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35734824
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторгде найти литературу по sql в visual basice
sql в visual basice - нет
sql - это некоторый стандарт, бывают правда небольшие отличия (диалекты)

по вопросу:
чему будет равно
debug.print "select [city].* from [city] where [city].[index]=" & Str(s)

index - какой имеет тип?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35734931
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssssШыфл, не подскажешь, где найти литературу по sql в visual basice.
У тебя сдесь не "sql в visual basice", а самый что нинаесть чистый SQL-92. Вот книги , можно найти и оцифрованные версии. Если у тебя там много работы с данными, я бы тебе советовал завести себе СУБД, хотя бы Ассеss.
DeViLsssss
не получается вот что:
Код: plaintext
conn4.Execute "select [city].* from [city] where [city].[index]=" & Str(s)
пишет, что не хватает параметра. а какого не пойму...

Это он тебе так пишет, потому что скорее всего ты что-то не правельно написал, а он это принимает за параметр и просит задать его значение.
Открой окно Immidiate (ctr+G) и выведи туда строчку да посмотри, что ему может не нравится
Код: plaintext
debug.print "select [city].* from [city] where [city].[index]=" & Str(s)


P.S. Для того чтобы использовать параметры нужно использовать ADODB.Command
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35735111
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot index - какой имеет тип?
Тип "строка" поэтому str(s)

2шыфл
Спасибо! Попробую.
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35736358
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssssHandKot index - какой имеет тип?
Тип "строка" поэтому str(s)



при использовании строк в SQL строки надо обертывать символом ' (апостроф)
иначе строка воспринимается как параметр

пример поиска записи по текстовому полю
Код: plaintext
select * from table where field = Строка_для поиска
в данном случае будет искатся параметр с именем Строка_для поиска

поэтому надо делать так
Код: plaintext
select * from table where field = 'Строка_для поиска'

т.е в Вашем случае

Код: plaintext
conn4.Execute "select [city].* from [city] where [city].[index]='" & Str(s) + "'"
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35736717
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot,

Спасибо тебе огромное!
Может когда-нибудь научусь строить эти запросы....
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35738478
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам, ребята, кто помог мне разобраться с запросами!!!
Простые понял.

Теперь для меня встал вот какой вопрос:

conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s & ";Extended Properties=dBASE IV;User ID=Admin;Password=;"
conn.Open
conn.Execute "Insert into [" & s2 & "] select [" & ss2 & "].* from [" & ss2 & "]"
conn.Execute "Delete from [" & s2 & "] " & vbCr & "where [" & s2 & "].[DELETED]=1"


Есть файл, из которого вставляются данные, потом данные с определенным условием удаляются.
Так вот! Здесь есть загвоздка вот какого плана.

Поле "deleted" = 0 или 1. (типа "нет" и "да").

В базе, куда записи добавляются, после добавления могут появится одинаковые строки, но с разными значениями поля "deleted".

У меня две задумки:
1: сделать запрос на добавление так, чтобы он мог видеть, допустим, что если есть такая строка, то он меняет значение поля "deleted" с 0 на 1, а если нет, то добавляет строку.

2: каким-то образом сделать поиск и удаление дубликатов строк после всех операций.

Вот на 2 вариант по-идее можно сделать запрос с вычислением rst.recordcount и удаление одной из записей. Но это долго будет.

Строки сравниваются по полю "NUMBER". Оно не уникально (баг тех ко делал изначально эту всю бадягу). Исправить пытался, данные начинают теряться.

Если можно как-нибудь подойти к 1 варианту, то дайте намек какой, где копать надо.
у меня были подозрения на UPDATE. Тогда у меня не добавляются записи, а только "deleted" меняется.

Вот...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35738511
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssss,
что-то я совсем не понял вашу Санта-Барбару :)

То ты помечаешь на удаление через обнуление NUMBER, то, аказывается, у тебя там есть поле DELETED как флаг на удаление... :/

Зачем тебе заморачиваться с UPDATE, если в случае чего ты можешь удалить те записи, у которых DELETED=1?

И, я так понял, первичного ключа (уникально идентификатора записи) в этой таблице нету? Хотя бы составного, допустим NUMBER + дата, NUMBER+дата+исполнитель?
Потому как без первичного ключа много не нарешаешь - это не база, а свалка данных получается...
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35738543
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

Шыфлесли в случае чего ты можешь удалить те записи, у которых DELETED=1?

Я так и делаю.

Мне нужно в базе отыскать дубликаты, и один из них удалить. или хотя бы так же сделать его "deleted"=1

Извиняюсь за некорректно поставленый вопрос, просто время было позднее....
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35739077
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем делать инсерт таких же строк?
если очень уж надо, то сначала удалить те строки из первого файла, которые есть во втором файле и будут инсертиться, а потом уже инсертить строки в первый файл из второго

делается всего лишь добавлением условия в WHERE


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35746350
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл! Hard! Помогите плиз! Что не так?
conn.Execute "update [" & s2 & "] SET [" & s2 & "].[DELETED] = '1' where [" & ss2 & "].[NUMBER] = [" & s2 & "].[NUMBER]"

пишет "недостаточно параметров".

conn.Execute "update [" & s2 & "] SET [" & s2 & "].[DELETED] = '1' as t where [" & ss2 & "].[NUMBER] = [" & s2 & "].[NUMBER]"


пишет "пропущен оператор". убирал апострофы у 1 не помогает.

делал так:
conn.execute "update [" & s2 & "] set [" & s2 & "].[DELETED]=1 where [" & s2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from [" & s2 & "] as t inner join [" & ss2 & "] as tt on [t].[NUMBER] = [tt].[NUMBER])"


то же самое
Что делать?
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35748159
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeViLsssss,

Ты выведи строку, которую исполняешь уже в значениях. Похоже что у тебя опечатка в имени таблицы... :/ но телепатор может врать
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35748171
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

Спасибо! Только что докопался!

conn.Execute "update [" & s2 & "] SET [" & s2 & "].[DELETED] = '1' where [" & s2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from " & ss2 & " as t inner join [" & s2 & _
"] as tt on [t].[NUMBER] = [tt].[NUMBER])"



ошибка была после where. у меня стояла ss2 а нужно было s2. Вот!

Ну это-то ладно! Это круто!
а вот приблизительно как можно сделать запрос так, чтобы было что-то примерно такое

conn.Execute "update [" & s2 & "] SET [" & s2 & "].[DATEDEL] = [" & ss2 & "].[DATEDEL] where [" & s2 & "].[NUMBER] in " & _
"(select [t].[NUMBER] from " & ss2 & " as t inner join [" & s2 & _
"] as tt on [t].[NUMBER] = [tt].[NUMBER])"


сейчас делаю перебирая рекордсет, но это долговато...

Я понимаю что нужно прописать что-то типа [" & ss2 & "].[DATEDEL] as XXX. Но не работает. Пишет что пропущен оператор. Где мой косяк?

Кстати! С прошедшими праздниками!
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35748175
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и ещё! У меня такая штука вылазит "данный метод сортировки не поддерживается системой".
Но только после первого запуска операций! А если второй, третий разы кнопку жать, то все без проблем. почему может быть? Работаю через драйвер MS Jet4.0
...
Рейтинг: 0 / 0
ошибка в инструкции update при выполнении операций с dbf через ADO
    #35749439
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать через ODBC? :
Код: plaintext
conn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};DBQ=" & s
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в инструкции update при выполнении операций с dbf через ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]