更改记录源但保留过滤器

时间:2012-11-21 18:51:31

标签: ms-access filter access-vba

我有一个小问题:

我的表单有2个可能的下层查询(具有完全相同的字段和元数据)在用户需要时从一个更改为另一个。  问题是,在更改记录源访问之后,不会使过滤器保持原样。

我更改了记录源OnLoad,并且根据宏可以成为过滤器,打开表单的内容。过滤器不起作用。

有人可以给我一个暗示吗?

2 个答案:

答案 0 :(得分:0)

你根据宏提到过滤器,但你没有说明宏是什么。让我们说你有:

DoCmd.OpenForm "form1", , , "atext='def'"

这会将表单的Filter属性设置为:

atext='def'

您可以在更改记录源之前保存过滤器属性并重新应用它。

sFilter = Me.Filter
Me.RecordSource = "select * from table1"
Me.Filter = sFilter
Me.FilterOn = True

答案 1 :(得分:0)

确定。要让它发挥作用并不是那么难。 您必须更改记录源onLoad并且表单由具有“where”条件的宏打开,然后:  1.将一个条件放入onLoad方法,过滤器是否打开。  2.如果为True,则将Filter保存为字符串并将True保存为bool  3.使recordSource改变  4.控制你的bool,是否属实  5.如果为True,则将过滤器设置回来  6.打开过滤器

Private Sub ChengeRecS()
Dim fltr As String
Dim fB As Boolean
If Me.FilterOn = True Then
    fB = True
    fltr = Me.Filter
End If
Me.RecordSource = "newRecordSource"
If fB = True Then
    Me.Filter = fltr
    Me.FilterOn = True
End If
End Sub