如何在使用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()'。這有幫助嗎? –