powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в инструкции update при выполнении операций с dbf через ADO
14 сообщений из 39, страница 2 из 2
ошибка в инструкции 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
14 сообщений из 39, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка в инструкции update при выполнении операций с dbf через ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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