Currentdb.Execute (Database.Execute) не работает или выдает ошибки - PullRequest
3 голосов
/ 08 апреля 2019

Я пытаюсь вставить 2 значения из переменных в таблицу с помощью SQL, код завершается без ошибок, но записи не отображаются в таблице.

Я попытался выполнить код в окне иммидата, ноэто дало мне ошибку в моих скобках (я не знаю, как правильно ввести приглашение), поэтому я изменил свой запрос с наличия переменных на заданные значения для вставки, но он все равно не работает и не выдает ошибку,

Я убедился, что в моем коде нет «On Error», и попытался встроить ошибку вручную.Синтаксические ошибки отображаются как обычно, поэтому я предполагаю, что с сообщениями об ошибках все в порядке.

'Table Columns: ID, ProjectID, Versionnumber

SQL = "INSERT INTO tblVersion " & _
"(ProjectID, Versionnumber) " & _
"VALUES (1, 'v3.0');"
Currentdb.Execute SQL

Я ожидаю, что значение будет отображаться при открытии таблицы.Вместо этого вообще ничего не произошло.

1 Ответ

3 голосов
/ 08 апреля 2019

CurrentDb.Execute не вызывает все ошибки по умолчанию.Он просто молча завершится ошибкой, не сообщая вам, что запрос был неудачным, независимо от каких-либо On Error операторов.

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

Чтобы получить все ошибки, используйте dbFailOnError.Это также приведет к сбою всего запроса, если одна операция обнаружит ошибку (например, одна строка нарушает ограничение), в то время как без нее не будет выполнена только неудачная операция.

Итак, в общем, используйтеэто:

Currentdb.Execute SQL, dbFailOnError
...