VBA访问错误3134语法错误

时间:2018-04-23 23:54:28

标签: sql ms-access access-vba

我正试图修复我的第一份INSERT INTO声明。这是CurrentDb.Execute strSQL

的字符串
strSQL = "INSERT INTO [Procedure] (UserName, Date, StartTime, EndTime, Semester, FacilityID, Doctor, CaseID, ServiceID, RoleName, Trainer, Comment, Updated_By, Updated_Datetime) VALUES ('username', '12/04/2018', '01:30 PM', '02:00 PM', 'Fall', '4', 'Dr. Who', 'Cataract Extraction with Stent For Glaucoma', '4', 'OS', 'Trainer', 'Comment', 'username', '4/23/2018 7:51:00 PM');"

程序字段名称:

UserName, Date, StartTime, EndTime, Semester, FacilityID, Doctor, CaseID, ServiceID, RoleName, Trainer, Comment, Updated_By, Updated_Datetime

非常感谢任何帮助。谢谢!! -Tyler M

3 个答案:

答案 0 :(得分:1)

这是因为你的表中有一个与保留字相同的字段(内置函数)

Date

将表格中的字段重命名为

更好的字段
DateOfProcedure

并且您的查询将起作用(当然也在编辑您的查询字符串之后)

在Access Debug窗口(Ctrl + G)中,您可以运行

? AccessError(3134)

它会返回

Syntax error in INSERT INTO statement.

当您在调试窗口中输入

? date

您尝试使用表中字段名称的保留字,导致SQL查询失败。

另外两个提示(可选)

如果这些ID字段中的任何一个是数字,则不必将值括在单引号中(只要整个查询字符串用双引号括起来就可以没有引号)

对于日期/时间字段,您可以使用#符号而不是单引号来包含日期/时间值

答案 1 :(得分:0)

尝试在字段名称周围添加方括号

我确信MS-Access中的 [Date]是一个保留字 - 所以应该将其包装为

strSQL = "INSERT INTO [Procedure] (UserName, [Date],....

答案 2 :(得分:0)

此外,日期/时间字段必须传递正确的值,并且数字值周围没有引号:

strSQL = "INSERT INTO [Procedure] (UserName, [Date], StartTime, EndTime, Semester, FacilityID, Doctor, CaseID, ServiceID, RoleName, Trainer, Comment, Updated_By, Updated_Datetime) VALUES ('username', #12/04/2018#, #01:30 PM#, #02:00 PM#, 'Fall', 4, 'Dr. Who', 'Cataract Extraction with Stent For Glaucoma', 4, 'OS', 'Trainer', 'Comment', 'username', Now());"