在宏中访问2010 SQL错误

时间:2011-11-03 16:30:51

标签: sql ms-access ms-access-2010

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

“更新资产”表单有一个名为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 ;

使用交易:

但是,当我去保存记录时,我收到以下错误:

INSERT INTO语句中的

语法错误

宏名称: AuditLog

操作名称: RunSQL

参数: INSERT INTO动作(AssetTag,LocationID,Slot,Status,Timestamp,TechID); SELECT(AssetTag,LocationID,Slot,Status,LastUpdated,TechID)FROM Assets WHERE Assets!AssetTag = Me!AssetTag;,Yes

错误编号: 2950

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

分号“完成”声明。基本上你在那里做的是切断INSERT INTO动作(AssetTag,LocationID,Slot,Status,Timestamp,TechID)的声明; < -

为了将来参考,您几乎不需要在访问中使用分号。它可能会为你添加它,但为了避免这样的东西,只是不要把它放进去。

答案 2 :(得分:0)

正如其他人所说,分号是罪魁祸首。如果您将来遇到Access SQL语句问题,则可以将该语句粘贴到Access Query Designer中。这样做会让查询设计器为您找到问题(通过突出显示语法问题的代码)。