我正在尝试使用非常有限的知识来解决Access中的一些VBA问题。我构建了下面的代码,以便在同一个访问数据库中简单地插入一个表。
我收到错误 "在SQL语句结束时缺少分号(;)。"
但是我有分号。我只能假设我在语法某处犯了一个新手错误但是经过太长时间的尝试后我感到难过,任何指针都非常赞赏!
Dim StrSQL As String
Dim InDate As Date
Dim VacNum As String
Dim Stage As String
InDate = Now()
VacNum = Me.Vacancy_No
Stage = Me.Current_Stage
StrSQL = "INSERT INTO Stage (Vacancy_ID,StageDate,Stage) VALUES ('" & VacNum & "','" & InDate & "','" & Stage & "' );"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
答案 0 :(得分:1)
您的语法存在SQL注入的风险,这可能就是您收到此消息的原因。
此错误的可能原因是您的某个字段包含单引号,导致SQL出现故障。
对此的正确解决方案是参数化:
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", "INSERT INTO Stage (Vacancy_ID,StageDate,Stage) VALUES (@Value1,@Value2,@Value3 );")
qdf.Parameters("@Value1") = VacNum
qdf.Parameters("@Value2") = InDate
qdf.Parameters("@Value3") = Stage
qdf.Execute