如何在使用VBA的情况下禁用Datagridview的过滤器,如果在过滤之后没有记录?Access 2010 - 错误处理过滤器子表
在这里我第一次尝试:
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
这是第二次尝试:
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.Filter = Replace(Me.Filter, "[Tabelle1].", "")
Set rs = rs.OpenRecordset()
If rs.EOF Then
Cancel = True
End If
End Sub
在第二个代码中,我得到的错误3061的第一个代码“作品”,但终于没我需要。
因为:
我有3个表格。 MAIN,Sub1和Sub2。
在MAIN中是Sub1,Sub2和一个单独的TextBox。 TextBox被称为“psoudoID”。 Sub1是一个正常的窗体,用于显示不同记录集的详细信息,并放置在MAIN的顶部。 Sub1下面是Sub2。 Sub2是一个Datagridview。当用户点击Sub2上的记录集时,Sub2中的ID“进入”到psoudoID并从那里到Sub1。你明白?
现在的问题是,用户可以过滤Datagrid中的每一列来查找此处需要的记录集并显示上述所有详细信息。但是,当数据网格在过滤后为空时,Sub2无法为psoudoID提供ID,因此Sub1不会在MAIN中显示更长时间。屏幕在那个地方是空的。通过单击网格中的筛选按钮,Sub1再次出现在屏幕上。
我想通过单击MsgBox的“确定”或自动而不是通过单击gridview上的过滤器按钮来禁用过滤器。
我希望你能理解我的叙述。对不起,我的英文不好:-)
THX。
贝吉塔
第一次尝试中的哪一行产生错误3061?你是否有理由将Me.FilterOn设置为False或者修改过滤器而不是将Cancel设置为True? ('Cancel'取消当前的过滤器操作并返回到前一个过滤器(如果有的话),而'Me.FilterOn = False'关闭过滤器,'Cancel'看起来适合你想要的) –
第一个代码有效。但我不能在正确的地方“发射”它。错误3061出现在第二个代码上。在替换。 –
尝试使用'Dim rsf As Recordset_ Set rsf = rs.OpenRecordSet'替换'Set rs = rs.OpenRecordset()'。这有帮助吗? –