簡體   English   中英

Access 2010-錯誤處理篩選器子窗體

[英]Access 2010 - Error Handling Filter Subform

如果過濾后沒有記錄,如何使用VBA禁用Datagridview的過濾器?

這是我的第一次嘗試:

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種表格。 主,子1和子2。

在MAIN中是Sub1,Sub2和單個TextBox。 該文本框稱為“ psoudoID”。 Sub1是普通表格,用於顯示不同記錄集的詳細信息,並位於MAIN的頂部。 Sub1下面是Sub2。 Sub2是一個Datagridview。 當用戶單擊Sub2上的記錄集時,Sub2的ID進入psoudoID,然后從那里進入Sub1。 你明白?

現在的問題是,用戶可以過濾Datagrid中的每一列以找到此處需要的記錄集並顯示上面的所有詳細信息。 但是,當過濾后datagrid為空時,Sub2無法為psoudoID賦予ID,以此類推Sub1在MAIN中的顯示時間不再更長。 屏幕在那個地方是空的。 通過單擊網格中的“篩選器按鈕”,Sub1再次出現在屏幕上。

我想通過單擊MsgBox的“確定”或自動禁用篩選器,而不是單擊gridview上的“篩選器按鈕”來禁用篩選器。

希望您能理解我的看法。 對不起,我的英語不好:-)

謝謝。

素食

我相信您在使用過濾器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個記錄)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM