Run-time Error 3131 FROM子句语法错误(Microsoft Access)设置子窗体RecordSource报错
错误原因
- 核心问题为SQL字符串拼接时未预留合理空格:原代码中
"FROM DEL"与后续的"WHERE..."直接拼接后会生成FROM DELWHERE的非法内容,不符合SQL语法规范,直接触发FROM子句语法错误。 - 次要拼接错误:
LIKE条件后未闭合单引号,同时未预留空格与后续的ORDER BY拼接,会生成*ORDER BY的非法内容,进一步导致语法报错。
修复方案
将SQL拼接部分的字符串补全空格、补全LIKE条件的闭合单引号即可,修正后的完整代码如下:
Private Sub btnsearch_Click() Dim SQL As String SQL = "SELECT DEL.ID, DEL.Company, DEL.Address, DEL.Country, DEL.Category, DEL.Activity, DEL.[Products Involved] " _ & "FROM DEL " _ & "WHERE [Products Involved] LIKE '*" & Me.txtkeywords & "*' " _ & "ORDER BY DEL.Company;" Me.sub_dellist.Form.RecordSource = SQL Me.sub_dellist.Form.Requery End Sub
调试技巧
后续遇到同类SQL语法报错时,可在SQL字符串赋值完成后加一行Debug.Print SQL,按Ctrl+G调出VBA编辑器的立即窗口,就能看到拼接完成的完整SQL语句,复制到Access的查询设计界面直接运行,就能快速定位具体语法问题。
内容的提问来源于stack exchange,提问作者Noobcoder123
相关产品推荐
相关产品推荐

