Access 2010 - 错误处理过滤器子表单

时间:2017-05-26 07:15:01

标签: vba ms-access access-vba ms-access-2010 filtering

如果在过滤后没有记录,如何使用VBA禁用Datagridview的过滤器?

这是我的第一次尝试:

<button (click)="toggleBackgroundColor()" ion-button [style.background-color]="hexColor">Click me!</button>

这是第二次尝试:

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        MsgBox ("Kein Datensatz gefunden. Filter wird entfernt.")
        Me.Form.FilterOn = False
        Me.Form.Requery
    End If
End Sub

在第二个代码中,我得到错误3061.第一个代码&#34;工作&#34;,但最终不想要我。

由于:

我有3张表格。 MAIN,Sub1和Sub2。

在MAIN中有Sub1,Sub2和单个TextBox。 TextBox是调用&#34; psoudoID&#34;。 Sub1是一个普通的表格,用于显示不同记录集的详细信息,位于MAIN的顶部。 Sub1以下是Sub2。 Sub2是Datagridview。当用户点击Sub2上的记录集时,来自Sub2&#34;的ID将变为&#34;到psoudoID并从那里到Sub1。你明白?

现在的问题是,用户可以过滤Datagrid中的每一列以查找此处需要的记录集并显示上面的所有详细信息。但是当过滤后数据网格为空时,因此Sub2不能为psoudoID提供ID,因此Sub1不会在MAIN中显示更长时间。那个地方的屏幕是空的。通过单击网格中的过滤器按钮,再次在屏幕上显示Sub1。

我想通过点击&#34; Ok&#34;来禁用过滤器。一个MsgBox或自动,而不是通过单击gridview上的过滤器按钮。

我希望你能理解我的描述。抱歉我的英语不好: - )

THX。

Vegeta

1 个答案:

答案 0 :(得分:0)

我相信您在使用过滤器Null时遇到问题,并且在实际应用过滤器之前使用Me.Filter。此外,将对象重新分配给自己的属性/成员之前已经给我带来了问题,所以我尽量避免这样做。

以下内容应该有效:

Dim strOldFilter As String
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
    Me.TimerInterval = 50
    strOldFilter = Nz(Me.Filter, "")
End Sub

Private Sub Form_Timer
        Me.TimerInterval = 0
        If Me.Filter = strOldFilter Then Exit Sub
        Dim rs As DAO.Recordset
        Dim strFilter As String
        strFilter = Nz(Me.Filter, "")
        If strFilter = "" Then
            'Handle this specific scenario
             Exit Sub
        End if
        Set rs = Me.RecordsetClone
        rs.Filter = Replace(strFilter, "[Tabelle1].", "")
        Dim rsf as DAO.Recordset
        Set rsf = rs.OpenRecordset

        If rsf.EOF Then
            Me.Filter = strOldFilter
        End If
End Sub

注意如果更改过滤器导致0个记录到另一个过滤器导致0个记录,则可能导致每50毫秒重复一次的无限循环(但是如果过滤器导致0个记录,则不应该功能有效)