WHERE子句添加筛选条件时触发Run-Time Error 3075语法错误
解决VBA Update语句的Run-Time Error 3075问题
错误原因
你的代码存在两处语法错误,导致SQL语句拼接后不符合语法规范:
- 第二个条件行开头多了一个多余的
&符号 AND关键字前没有空格,致使前一个条件的结尾与AND直接连在一起,SQL解析时无法识别合法的运算符
另外注意字段名拼写:HoursePerDay大概率是笔误,应为HoursPerDay,如果表中实际字段是后者,必须修正这个拼写错误才能正常执行。
修正后的代码
Sub UpdateX() Dim dbs As Database Set dbs = OpenDatabase("SOShops.mdb") dbs.Execute "UPDATE Employees " _ & "SET Payrate = 12 " _ & "WHERE DaysAtWork = " & Me.txtDaysWorked & " " _ & "AND HoursPerDay = " & Me.txtHrsWorked dbs.Close End Sub
额外建议
为了避免SQL注入和类型转换问题,推荐使用参数化查询,示例如下:
Sub UpdateX_Param() Dim dbs As Database Dim qdf As QueryDef Dim strSQL As String Set dbs = OpenDatabase("SOShops.mdb") strSQL = "UPDATE Employees SET Payrate = 12 WHERE DaysAtWork = ? AND HoursPerDay = ?" Set qdf = dbs.CreateQueryDef("", strSQL) ' 绑定参数 qdf.Parameters(0) = Me.txtDaysWorked qdf.Parameters(1) = Me.txtHrsWorked qdf.Execute Set qdf = Nothing dbs.Close End Sub
内容的提问来源于stack exchange,提问作者Jeffery Tengen
相关产品推荐
相关产品推荐

