Проблема определенно не из-за синтаксической ошибки с DateAdd
. Этот пример окна Immediate показывает, что ваш синтаксис DateAdd
действителен.
? DateAdd("yyyy",10,Date())
2/18/2024
И это будет работать одинаково в коде VBA или в запросе.
Учтите, что поле доступа может иметь свойства name и caption.
![Свойства поля, отображающие имя и заголовок](https://i.stack.imgur.com/q9GFh.png)
Когда полю назначен заголовок, во многих случаях этот заголовок используется вместо имени поля. Одной из таких ситуаций является открытие таблицы непосредственно в режиме таблицы.
Таким образом, в вашей ситуации таблица может включать поле с заголовком "OrderDate", но фактическое имя поля другое. И в запросе вы должны использовать имя, потому что Access не распознает заголовок, предположит, что это должен быть параметр, и ожидает, что вы предоставите значение для параметра.
Проверьте дизайн таблицы, чтобы убедиться, что вы используете фактическое имя поля в своем запросе.
Вы можете избежать этой проблемы, создав запрос в конструкторе запросов Access. Запустите его как запрос SELECT
и выберите одно из доступных имен полей. После того, как он будет правильно работать как SELECT
, вы сможете преобразовать его в UPDATE
, который вам действительно нужен.
Access предлагает удобные функции для рук. Иногда они добиваются своего и становятся раздражающими. Но это тот случай, когда полезные тенденции Access могут быть действительно полезными. :-)
Оказывается, у меня есть копия Northwind из Access 2007. По крайней мере, в моей копии поле называется «Дата заказа». Так что подпись не виновата. Просто закрепите имя поля, чтобы Access распознал его как «одно», а не два.
UPDATE Orders
SET [Order Date] = DateAdd("yyyy",10,[Order Date]);
Обратите внимание, что это еще один пример проблемы, которую может помочь вам избежать конструктор запросов.
person
HansUp
schedule
18.02.2014
UPDATE Orders set OrderDate = DateAdd("yyyy",10,[OrderDate])
... - person bhs   schedule 18.02.2014UPDATE
в конструкторе запросов Access. Когда вы запустите его, Access представит диалоговое окно ввода, в котором запрашивается значение параметра. Диалоговое окно включает имя того, что Access считает параметром. Как называется параметр? - person HansUp   schedule 18.02.2014Orders
. Если таблица называетсяOrder
, вам понадобятся квадратные скобки[]
вокруг нее, потому чтоORDER
является зарезервированным словом в SQL. @HansUp предложил хорошее предложение о том, как определить реальную проблему. - person Gord Thompson   schedule 18.02.2014