Access 2010 SQL ошибка в макросе - PullRequest
0 голосов
/ 03 ноября 2011

Как проект класса, я создаю базу данных Access 2010, которая отслеживает инвентарь.Для целей этого вопроса есть две соответствующие таблицы, Активы и Действия, и одна соответствующая форма, Обновление Актива.Моя цель - вставлять новую запись в таблицу действий каждый раз, когда кто-то обновляет запись в таблице активов.Новая запись действий будет содержать снимок полей, содержащихся в текущей записи во время сохранения.

Форма обновления актива имеет макрос AuditLog, присоединенный к событию после обновления.Макрос использует команду RunSQL со следующими параметрами:

Оператор SQL:

INSERT INTO Actions (AssetTag, LocationID,Slot,Status,Timestamp,TechID) ; 
SELECT(AssetTag,LocationID,Slot,Status,LastUpdated,TechID) FROM Assets WHERE 
   Assets!AssetTag = Me!AssetTag ;

Использовать транзакцию: Да

Однако, когда я идучтобы сохранить запись, я получаю следующую ошибку:

Синтаксическая ошибка в инструкции INSERT INTO

Имя макроса: AuditLog

Имя действия: RunSQL

Аргументы: INSERT INTO Actions (AssetTag, LocationID, Slot, Status, Timestamp, TechID);SELECT (AssetTag, LocationID, Slot, Status, LastUpdated, TechID) ИЗ активов, ГДЕ активы! AssetTag = Me! AssetTag;, да

Номер ошибки: 2950

Я добавил папку с базой данных в список надежных расположений Access.Доступ определенно не моя сильная сторона, поэтому любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 07 ноября 2011

Точки с запятой "завершите" утверждение. По сути, то, что вы делаете, - это отключение вашего заявления в INSERT INTO Actions (AssetTag, LocationID, Slot, Status, Timestamp, TechID); <- </p>

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

0 голосов
/ 07 ноября 2011

Как и предполагали другие, виновником является точка с запятой. Если \ когда у вас возникнут будущие проблемы с вашими инструкциями Access SQL, вы можете вставить этот оператор в Access Query Designer. Это позволит Query Designer найти проблему для вас (выделив код с синтаксической проблемой).

0 голосов
/ 03 ноября 2011

Это не моя сильная сторона, но я держу пари, что точка с запятой - это конец выражения / оператора и что, как и SQL Server, это должен быть составной оператор (выберите ... в)

Поэтому удалите эту первую точку с запятой.

INSERT INTO Actions (AssetTag, LocationID, Slot, Status, Timestamp, TechID) SELECT (AssetTag, LocationID, Slot, Status, LastUpdated, TechID) ИЗ активов, ГДЕ Активы! AssetTag = Me! AssetTag;

...