Ms access 在VBA中,如何将筛选器转换为sql字符串where子句

Ms access 在VBA中,如何将筛选器转换为sql字符串where子句,ms-access,vba,Ms Access,Vba,有人有更好的方法吗?我希望用户能够过滤到一组记录,然后使用sql语句对过滤后的记录进行处理 目前,我的代码类似于下面的代码,并且可以正常工作。但我确实想知道是否有更好的(或其他?)方法来实现这一点,以避免笨拙的替换声明?我想知道我是否可以用记录集来代替它,但是除非我遗漏了什么,否则无法对记录集执行集合操作,我必须逐个循环记录才能做到这一点 还有其他建议吗 Dim db As Database Dim frm As Form Dim sqlCmd As String Dim filter As S

有人有更好的方法吗?我希望用户能够过滤到一组记录,然后使用sql语句对过滤后的记录进行处理

目前,我的代码类似于下面的代码,并且可以正常工作。但我确实想知道是否有更好的(或其他?)方法来实现这一点,以避免笨拙的替换声明?我想知道我是否可以用记录集来代替它,但是除非我遗漏了什么,否则无法对记录集执行集合操作,我必须逐个循环记录才能做到这一点

还有其他建议吗

Dim db As Database
Dim frm As Form
Dim sqlCmd As String
Dim filter As String

Set db = CurrentDb
Set frm = Forms("frmReplen").Controls("FrmReplenSheet").Form
filter = Replace(frm.filter, "[FrmReplenSheet].", "")

sqlCmd = "UPDATE tblRCmDataSheetExtract " & _
    "SET Completed = 1 " & _
    "WHERE " & filter

db.Execute sqlCmd

你唯一能做的就是缩短你的程序。你可以这样做:

currentdb.Execute "UPDATE tblRCmDataSheetExtract SET Completed = 1 WHERE " & Replace(Forms!frmReplen!FrmReplenSheet.Form.Filter, "[FrmReplenSheet].", "")
或者当您在frmReplen中运行它时,您可以使用

currentdb.Execute "UPDATE tblRCmDataSheetExtract SET Completed = 1 WHERE " & Replace(Me.FrmReplenSheet.Form.Filter, "[FrmReplenSheet].", "")
或从子窗体“FrmReplenSheet”中:


这将把整个过程放在一个命令中。您是否喜欢更好的可读性或更短的过程取决于您。

您的过滤器是什么?您可以轻松地将表达式转换为
WHERE
子句?这就是问题所在-我想将筛选器转换为WHERE子句,但筛选器将由用户设置。谢谢Dorian,我知道您的意图。我真正想要的是另一种完全不同的方法,希望有一个函数或者一些我忽略了的东西,但是我画了一个空白。没关系,它确实起作用了,尽管不雅观:)
currentdb.Execute "UPDATE tblRCmDataSheetExtract SET Completed = 1 WHERE " & Replace(Me.Form.Filter, "[FrmReplenSheet].", "")