Access VBA中DoCmd.RunSQL删除指定范围记录报错求助
Access窗体DoCmd.RunSQL范围删除语句的引号与连接符问题解决方法
全表删除语句能正常运行,说明DoCmd.RunSQL本身没问题,问题出在带范围条件的SQL字符串拼接上,核心是要根据[CTR #]字段的数据类型调整引号和连接方式:
情况1:[CTR #]是数字类型(整数/长整型等)
数字类型字段在SQL中不需要引号包裹,直接拼接标签的Caption值即可:
Private Sub YourSubName() Dim strSQL As String ' 拼接范围条件的SQL语句 strSQL = "DELETE * FROM CTRTable WHERE [CTR #] BETWEEN " & Me.FirstRecordL.Caption & " AND " & Me.LastRecordL.Caption ' 执行SQL DoCmd.RunSQL strSQL End Sub
情况2:[CTR #]是文本类型
文本类型字段的取值必须用英文单引号包裹,拼接时要在标签值前后添加单引号:
Private Sub YourSubName() Dim strSQL As String ' 注意单引号的位置:在连接符前后分别添加 strSQL = "DELETE * FROM CTRTable WHERE [CTR #] BETWEEN '" & Me.FirstRecordL.Caption & "' AND '" & Me.LastRecordL.Caption & "'" DoCmd.RunSQL strSQL End Sub
调试技巧
如果仍报错,用Debug.Print strSQL输出拼接后的完整SQL语句,复制到Access的查询设计视图中直接运行,能快速定位语法错误:
Debug.Print strSQL ' 在立即窗口查看生成的SQL语句
注意事项
- 标签控件的取值是
Caption属性,不是Value属性,这是新手常犯的错误。 - 确保
Me.FirstRecordL和Me.LastRecordL的Caption值格式合法:数字类型不能包含非数字字符;文本类型若本身带单引号,需替换为两个单引号,比如Replace(Me.FirstRecordL.Caption, "'", "''")。
内容的提问来源于stack exchange,提问作者kronos8111
相关产品推荐
相关产品推荐

