作为一个类项目,我正在创建一个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语句,您可以将语句粘贴到访问查询设计器。这样做可以让查询设计器为您定位问题(通过突出显示有语法问题的代码)。