使用MS-Access中的查询表达式的语法错误数量

时间:2017-07-10 03:28:15

标签: ms-access

我在使用查询表达式时出现语法错误?错误,而我在代码下运行

CurrentDb.Execute "UPDATE StateBudget " & _
            " Set S_ID='" & Me.cbState & "'" & _
            ", C_ID=" & Me.cbCategory & _
            ", Year='" & Me.cbYear & "'" & _
            ", 1=" & Me.Ctl1 & _
            ", 2=" & Me.Ctl2 & _
            ", 3=" & Me.Ctl3 & _
            " WHERE S_ID = """ & _
            DLookup("ID", "States", "State='" & _
            Me.subformStateBudget.Form.Recordset.Fields("State") & "'") & """"

S_ID和Year是文本字段,C_ID,其余1,2,3是数字字段。 如果有什么我错过了?我是编程的初学者......

1 个答案:

答案 0 :(得分:0)

可能有一个数字Me。*字段为空,因此SQL会出现语法错误。使用Nz函数进行此类参数。对于调试,在执行之前在字符串变量中创建SQL,并使用Debug.Print将此变量的内容转储到立即窗口。您将很容易看到问题。

Dim strSQL

strSQL = "UPDATE StateBudget " & _
            " Set S_ID='" & Me.cbState & "'" & _
            ", C_ID=" & Nz(Me.cbCategory, 0) & _
            ", Year='" & Me.cbYear & "'" & _
            ", 1=" & Nz(Me.Ctl1, 0) & _
            ", 2=" & Nz(Me.Ctl2, 0) & _
            ", 3=" & Nz(Me.Ctl3, 0) & _
            " WHERE S_ID = """ & _
            DLookup("ID", "States", "State='" & _
            Me.subformStateBudget.Form.Recordset.Fields("State") & "'") & """"

Debug.Print strSQL
CurrentDb.Execute strSQL, dbFailOnError