ms-access运行时错误3075extra)



代码

strSQL = "SELECT tblHS_area_fields.hsaf_id " _
& "FROM tblHS_area_fields " _
& "WHERE (((tblHS_area_fields.hs_area_id)=" & hs_area_id & ") AND ((tblHS_area_fields.hsf_id)=13))"

Set rs = db.OpenRecordset(strSQL)

错误

尝试从窗体运行时的错误是:

Extra ) in query expression '(((tblHS_area_fields.hs_area_id)=" &
> hs_area_id & ") AND ((tblHS_area_fields.hsf_id)=13))'

从即时窗口获取错误:

Compile error: expected:  line number or label or statement or end of statement

所有字段都是数字。

VBA代码和SQL语句有什么问题?

只需删除sql:中的所有括号

strSQL = "SELECT tblHS_area_fields.hsaf_id " & _
"FROM tblHS_area_fields " & _
"WHERE tblHS_area_fields.hs_area_id = " & hs_area_id & " AND tblHS_area_fields.hsf_id = 13 "

在这种情况下,您不需要括号。

不是答案,但对于注释来说太长了:
下次,添加一个Debug.Print strSql,然后在SQL视图中创建一个查询,从调试窗口(ctrl+G)复制您的SQL语句,并将您的语句粘贴到那里
或者直接粘贴到Visual Studio中
然后您应该快速查看问题

考虑在执行Debug.print(strSQL)之前调试打印并记录SQL。

左括号必须与右括号匹配

一些分解有助于识别和匹配,正确的是:

strSQL = "SELECT hsaf_id" _
& " FROM tblHS_area_fields" _
& " WHERE (" _
& "( hs_area_id =" & hs_area_id & ")" _
& " AND ( hsf_id = 13 )" _
& ")"

对于SQL模板,您还可以使用字符串替换函数或使用自定义函数进行字符串模板化。请参见VBA字符串插值语法。

相关内容

  • 没有找到相关文章

最新更新