Access 2007 VBA:在查询参数中使用Form.Filter

问题描述:

我想根据用户的当前窗体过滤器创建并打开选择查询。我可以在VBA中通过解析表单的Me.Filter字符串,提取我需要的位并创建一个WHERE语句来实现。但是,加入所有必需的逻辑,标点符号和语法将会很痛苦。Access 2007 VBA:在查询参数中使用Form.Filter

所以我的问题,在我做这一切之前:是否有任何现有的功能来做到这一点?

谢谢。

+1

如果您使用表单的记录源作为select查询的基础,它不一定非常痛苦。 – Andre

+0

谢谢,但源不是问题,我看不到任何方法从记录源属性中获取SQL WHERE字符串。 – Absinthe

也许我的评论有点神秘。

假设您的表单的记录来源是myQuery

的形式进行过滤,Me.Filter = myQuery.field1 LIKE 'asdf*' AND myQuery.field2 = 42

所以你的选择查询是例如

SELECT field1, field3 
FROM myQuery 
WHERE myQuery.field1 LIKE 'asdf*' AND myQuery.field2 = 42 

myQuerydef.SQL = "SELECT field1, field3 FROM " & Me.Recordsource & _ 
    " WHERE " & Me.Filter 

所以我不太看是哪里的问题。

你的问题的答案是否定的,没有功能 - 但你不应该需要除了Me.Filter以外的任何东西。

编辑由HansUp建议:

如果您的窗体的记录源目前是不是一个单一的查询,但一个SELECT语句,创建从SELECT语句命名查询,并使用查询作为记录源。

+0

确实如此,但对于此用例,解决方案*将*作为RecordSource具有单个查询 - 如果它当前不是,则从当前的RecordSource创建一个命名查询。 @HansUp – Andre

+0

没有意识到你可以直接使用Me.Filter作为WHERE(myQuerydef.SQL =“SELECT field1,field3 FROM”&Me.Recordsource&“WHERE”&Me.Filter)。谢谢,新工具包。 – Absinthe