如何在VBA中使用AND运算符对ADO Recordset实现多条件过滤
正确的多条件过滤写法
你之前的两次给Filter赋值的写法会覆盖前一次的过滤条件,而你尝试的多条件写法错误原因是**AND属于过滤条件字符串的一部分,需要放在引号内,和两侧的条件拼接为完整的过滤字符串**,修正后的代码如下:
' 替换原来的两行rst.Filter赋值代码 rst.Filter = "OT = '" & oot & "' AND Parcial = '" & PARCIAL & "'" rst.Delete
优化建议
- 避免单引号语法报错:如果你的
oot或PARCIAL变量内容里可能包含单引号,需要先做转义处理:rst.Filter = "OT = '" & Replace(oot, "'", "''") & "' AND Parcial = '" & Replace(PARCIAL, "'", "''") & "'" - 更高效率的删除方案:不需要打开整个表的记录集再过滤删除,直接执行DELETE SQL语句性能更好、代码更简洁:
' 可以直接替换掉rst.Open到rst.Delete之间的所有代码 Dim delSql As String delSql = "DELETE FROM Registro_corte WHERE OT = '" & Replace(oot, "'", "''") & "' AND Parcial = '" & Replace(PARCIAL, "'", "''") & "'" cnn.Execute delSql
内容的提问来源于stack exchange,提问作者Felipe Mezzarana
相关产品推荐
相关产品推荐

