1

我有一个小问题:

我的表单有 2 个可能的底层查询(具有完全相同的字段和元数据)在用户需要时从一个更改为另一个。问题是,在更改记录源访问权限后,之前的过滤器并没有被应用。

我更改了记录源 OnLoad 并且应该有一个根据宏的过滤器,打开表单的内容。过滤器不起作用。

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

4

2 回答 2

0

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

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

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

atext='def'

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

sFilter = Me.Filter
Me.RecordSource = "select * from table1"
Me.Filter = sFilter
Me.FilterOn = True
于 2012-11-21T20:28:30.220 回答
0

好的。让它发挥作用并不难。您必须更改记录源 onLoad,然后通过带有“where”条件的宏打开表单: 1. 将条件放入 onLoad 方法中是否打开过滤器。2. 如果为真,则将过滤器保存为字符串并将 True 保存为布尔值 3. 使记录源更改 4. 控制您的布尔值,是否为真 5. 如果为真则将过滤器设置回 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
于 2012-11-21T20:53:29.470 回答