简体   繁体   English

访问VBA SQL运行时错误'3075'语法错误

[英]Access VBA SQL Run-time error '3075' Syntax error

I'm trying to run this code but it gives me the error message: 我正在尝试运行此代码,但它给了我错误消息:

Run-time error '3075'; 运行时错误'3075'; "Syntax error(missing operator) in query expression" “查询表达式中的语法错误(缺少运算符)”

How should I fix this error? 我该如何解决该错误?

I would like insert CellNumber that is in table1 but not in Variable table into ERROR table with DateTime , string, and CellNumber 我想插入CellNumber表1中而不是在变量表与日期时间 ,字符串和CellNumber 错误

Dim sqlstr As String

sqlstr = "SELECT CellNumber FROM table1 WHERE CellNumber NOT IN (SELECT CellNumber FROM Variable)"

DoCmd.RunSQL "INSERT INTO ERROR ([DateTime], RowNum, Error) SELECT Now(), 'string' as RowNum, CellNumber FROM(" & sqlstr & ")"
 Dim sqlstr As String
    sqlstr = "INSERT INTO Error ( [DateTime],RowNum, Error ) " & _
             "SELECT Now() , 'String' , table1.cellnumber FROM table1 " & _
             "LEFT JOIN Variable ON table1.cellnumber = Variable.cellnumber " & _
             "WHERE  Variable.cellnumber Is Null"
    currentdb.execute sqlstr, dbfailonerror

That's how I would do it 我就是那样做的

Edit------ I would like to add for posterity a few comments: 编辑------我想在后代添加一些评论:

  1. I would personally set my DateTime stamp field with a default value of Now() and omit it from my sql altogether...All new records would get time-stamped with less room for error. 我个人将DateTime戳字段设置为默认值Now() ,并从我的sql中完全省略它...所有新记录都将带有时间戳,错误空间更少。
 Dim sqlstr As String sqlstr = "INSERT INTO tblError ( StringField, CellNumber ) " & _ "SELECT 'String' , table1.cellnumber FROM table1 " & _ "LEFT JOIN table2 ON table1.cellnumber = table2.cellnumber " & _ "WHERE table2.cellnumber Is Null" currentdb.execute sqlstr, dbfailonerror 
  1. I would never use DateTime , Error , or Variable as a table or field name, because even if access can deal with it (by delimiting reserved names [DateTime] , for Instance), it can be confusing and misleading when trying to troubleshoot your code and sql. 我永远不会将DateTimeErrorVariable用作表或字段名称,因为即使访问可以处理它(通过分隔实例的保留名称[DateTime] ),在尝试对代码进行故障排除时也可能会造成混淆和误导和SQL。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM