Member 13602860 Ответов: 2

Привет, я получаю ошибку 3144 update statement синтаксическая ошибка на нижеприведенных строках, любезно предложите


CurrentDb().Execute "UPDATE W1 SET " & _
            "W1.[ Prg Name] = '" & RS.Fields("[Card Pgm Name]") & _
            "', W1.[Prg  Amt] = " & RS.Fields("[Trans Amt]") & ", " & _
            "W1.[Prg  Count] = " & RS.Fields("[Trans Count]") & _
            " WHERE [Level Name] = '" & RS.Fields("[Program Name]") & "'" & _
            " AND [Period] = '" & cmdPeriod.Value & "'" & _
            " AND [Tran Post Date] = #" & RS.Fields("[Posted Date]") & "#"


Что я уже пробовал:

Попробовал комплимент с обновлением " "

Richard MacCutchan

Похоже, что у вас есть символы кавычек/двойных кавычек в неправильных местах.

j snooze

если вы поставите точку останова в операторе execute и вставите "UPDATE W1..." в ближайшее окно, как это будет выглядеть? возможно, это поможет вам увидеть отсутствующую цитату или если в поле [Prg Name] есть цитата в имени, это также вызовет проблемы.

2 Ответов

Рейтинг:
0

Dave Kreskowiak

Ладно, ничего себе. Два слова: "Пареметризованные запросы"

Использование конкатенации строк приведет к смерти вашей базы данных. Не веришь мне? Google для "атаки SQL-инъекций" и начните читать, чтобы узнать, почему то, что вы делаете, так плохо.

Далее, Google для "VB.NET параметризованные запросы SQL", чтобы узнать, что с этим делать. Это также исправит вашу проблему со строкой запроса обновления, сделав ваш код гораздо более читабельным и гораздо более легким для обнаружения ошибок и отладки.

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

Возможно, вы также захотите изучить, что такое первичный ключ и использовать автоматически генерируемые столбцы идентификаторов в своих таблицах.