繁体   English   中英

在宏中访问2010 SQL错误

[英]Access 2010 SQL error in macro

作为一个班级项目,我将创建一个跟踪库存的Access 2010数据库。 出于这个问题的目的,有两个相关的表,资产和操作,以及一个相关的表格,更新资产。 我的目标是每次有人更新Assets表中的记录时,在Actions表中插入一条新记录。 新的动作记录将包含保存时当前记录中包含的字段的快照。

更新资产表单在更新后事件上附加了一个名为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操作(AssetTag,LocationID,Slot,Status,Timestamp,TechID); 从资产中选择(AssetTag,LocationID,Slot,Status,LastUpdated,TechID)Assets!AssetTag = Me!AssetTag;,是

错误号: 2950

我已将包含数据库的文件夹添加到“访问”的受信任位置列表中。 访问绝对不是我的强项,因此,我们将不胜感激。

这也不是我的强项,但我敢打赌,半冒号是表达式/语句的结尾,并且像SQL Server一样,它应该是复合语句(select ... into)

因此,删除该第一个分号。

在资产中插入动作(AssetTag,LocationID,Slot,状态,时间戳,TechID)SELECT(AssetTag,LocationID,Slot,Status,LastUpdated,TechID)在资产中!AssetTag = Me!AssetTag;

分号“完成”了该语句。 本质上,您在执行的操作是在INSERT INTO Action(AssetTag,LocationID,Slot,Status,Timestamp,TechID)处截断语句; <-

供以后参考,您几乎不需要在访问中使用分号。 它可能会为您添加它,但为避免出现此类情况,请不要将其放入。

正如其他人所建议的那样,分号是罪魁祸首。 如果\\,当Access SQL语句将来有问题时,可以将该语句粘贴到Access查询设计器中。 这样做将使查询设计器为您找到问题(通过突出显示带有语法问题的代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM