Access 2010 SQL error in macro



作为一个类项目,我正在创建一个Access 2010数据库,跟踪库存。为了解决这个问题,有两个相关的表,Assets和Actions,以及一个相关的表单,Update Asset。我的目标是在每次有人更新Assets表中的记录时,在Actions表中插入一条新记录。新的Actions记录将包含保存时当前记录中包含的字段的快照。

Update Asset表单有一个名为AuditLog的宏附加到After Update事件。宏使用带有以下参数的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 ;

Use Transaction: Yes

然而,当我去保存记录,我得到以下错误:

INSERT INTO语法错误

宏名称:AuditLog

操作名称:RunSQL

参数:INSERT INTO Actions (AssetTag, LocationID,Slot,Status,Timestamp,TechID);SELECT (AssetTag,LocationID,Slot,Status,LastUpdated,TechID) FROM Assets WHERE Assets!资产=我!

错误编号:2950

我已将数据库文件夹添加到Access的可信位置列表中。访问绝对不是我的强项,所以任何帮助都将非常感谢。

这也不是我的强项,但我敢打赌,分号是表达式/语句的结束,像SQL Server,这应该是一个复合语句(select…into)

因此,去掉第一个分号。

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

分号"complete"语句。本质上你所做的就是在INSERT INTO Actions (AssetTag, LocationID,Slot,Status,Timestamp,TechID)处切断你的语句;& lt;——

作为将来的参考,您几乎不需要在access中使用分号。它可能会为你添加它,但为了避免这样的事情,就不要添加它。

正如其他人所说,分号是罪魁祸首。如果你有未来的问题与您的访问SQL语句,您可以将语句粘贴到访问查询设计器。这样做可以让查询设计器为您定位问题(通过突出显示有语法问题的代码)。

最新更新