|
|
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
авторгде найти литературу по 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! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 13:53 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
DeViLsssssШыфл, не подскажешь, где найти литературу по sql в visual basice. У тебя сдесь не "sql в visual basice", а самый что нинаесть чистый SQL-92. Вот книги , можно найти и оцифрованные версии. Если у тебя там много работы с данными, я бы тебе советовал завести себе СУБД, хотя бы Ассеss. DeViLsssss не получается вот что: Код: plaintext Это он тебе так пишет, потому что скорее всего ты что-то не правельно написал, а он это принимает за параметр и просит задать его значение. Открой окно Immidiate (ctr+G) и выведи туда строчку да посмотри, что ему может не нравится Код: plaintext P.S. Для того чтобы использовать параметры нужно использовать ADODB.Command ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 14:16 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
HandKot index - какой имеет тип? Тип "строка" поэтому str(s) 2шыфл Спасибо! Попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2008, 15:00 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
DeViLsssssHandKot index - какой имеет тип? Тип "строка" поэтому str(s) при использовании строк в SQL строки надо обертывать символом ' (апостроф) иначе строка воспринимается как параметр пример поиска записи по текстовому полю Код: plaintext поэтому надо делать так Код: plaintext т.е в Вашем случае Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 08:39 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
HandKot, Спасибо тебе огромное! Может когда-нибудь научусь строить эти запросы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2008, 11:38 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
Спасибо вам, ребята, кто помог мне разобраться с запросами!!! Простые понял. Теперь для меня встал вот какой вопрос: 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" меняется. Вот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2008, 01:05 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
DeViLsssss, что-то я совсем не понял вашу Санта-Барбару :) То ты помечаешь на удаление через обнуление NUMBER, то, аказывается, у тебя там есть поле DELETED как флаг на удаление... :/ Зачем тебе заморачиваться с UPDATE, если в случае чего ты можешь удалить те записи, у которых DELETED=1? И, я так понял, первичного ключа (уникально идентификатора записи) в этой таблице нету? Хотя бы составного, допустим NUMBER + дата, NUMBER+дата+исполнитель? Потому как без первичного ключа много не нарешаешь - это не база, а свалка данных получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2008, 04:21 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
Шыфл, Шыфлесли в случае чего ты можешь удалить те записи, у которых DELETED=1? Я так и делаю. Мне нужно в базе отыскать дубликаты, и один из них удалить. или хотя бы так же сделать его "deleted"=1 Извиняюсь за некорректно поставленый вопрос, просто время было позднее.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2008, 09:42 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
зачем делать инсерт таких же строк? если очень уж надо, то сначала удалить те строки из первого файла, которые есть во втором файле и будут инсертиться, а потом уже инсертить строки в первый файл из второго делается всего лишь добавлением условия в WHERE I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2008, 08:32 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
Шыфл! 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])" то же самое Что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2009, 01:02 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
DeViLsssss, Ты выведи строку, которую исполняешь уже в значениях. Похоже что у тебя опечатка в имени таблицы... :/ но телепатор может врать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 00:53 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
Шыфл, Спасибо! Только что докопался! 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. Но не работает. Пишет что пропущен оператор. Где мой косяк? Кстати! С прошедшими праздниками! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 01:17 |
|
||
|
ошибка в инструкции update при выполнении операций с dbf через ADO
|
|||
|---|---|---|---|
|
#18+
Да и ещё! У меня такая штука вылазит "данный метод сортировки не поддерживается системой". Но только после первого запуска операций! А если второй, третий разы кнопку жать, то все без проблем. почему может быть? Работаю через драйвер MS Jet4.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 01:26 |
|
||
|
|

start [/forum/topic.php?fid=60&startmsg=35734824&tid=2161469]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
82ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 388ms |

| 0 / 0 |
