2017-01-23 3 views
0

Ich bekomme Laufzeitfehler 2465 in Zeile 4 (Me.ConstructQuery). Ich habe ein Formular mit einem Tab-Steuerelement darin eingebettet; Jede Registerkarte enthält ein Unterformular. Ich möchte in der Lage sein, jedes Unterformular aus mehreren Kombinationsfeldern innerhalb jeder Registerkarte abzufragen.Filtern von Unterformularen in Zugriff

Option Compare Database 

Public Sub cboLastName_AfterUpdate() 
    Me.ConstructQuery 
End Sub 

Function ConstructQuery() 
    Dim sFilter As String 

    If Nz(Me.qryHardware.Form.cboUserID, "") <> "" Then 
     sFilter = "UserID=" & Me.qryHardware.Form.cboUserID 
    End If 

    If Nz(Me.qryHardware.Form.cboLastName, "") <> "" Then 
     sFilter = "LastName=" & Me.qryHardware.Form.cboLastName 
    End If 

    Me.qryHardware.Form.Filter = sFilter 
    Me.qryHardware.Form.FilterOn = True 


End Function 

Private Sub cboBranch_Change() 
    Dim strSQL As String 

'populate userID comboBox 
Me.cboUserID.ColumnCount = 2 
Me.cboUserID.ColumnWidths = "0, 2cm" 
strSQL = "SELECT ID, UserID FROM Users WHERE BranchID=" & Me.cboBranch.Value 
Me.cboUserID.RowSource = strSQL 

'populate last name comboBox 
Me.cboLastName.ColumnCount = 1 
Me.cboLastName.ColumnWidths = "2cm" 
strSQL = "SELECT LastName FROM Users WHERE BranchID=" & Me.cboBranch.Value 
Me.cboLastName.RowSource = strSQL 

'poplulate first name comboBox 
Me.cboFirstName.ColumnCount = 2 
Me.cboFirstName.ColumnWidths = "0, 2cm" 
strSQL = "SELECT ID, FirstName FROM Users WHERE BranchID=" & Me.cboBranch.Value 
Me.cboFirstName.RowSource = strSQL 

'populate account Status comboBox 
Me.cboAccountStatus.ColumnCount = 2 
Me.cboAccountStatus.ColumnWidths = "0, 2cm" 
strSQL = "SELECT ID, AccountStatus FROM Users WHERE BranchID=" & Me.cboBranch.Value 
Me.cboAccountStatus.RowSource = strSQL 

End Sub 

erneut die gemeldete Linie die Ausnahme zu werfen ist Me.ConstructQuery

Ratschläge oder Anregungen sehr geschätzt.

Vielen Dank im Voraus.

+0

gerade contsuctquery sollte für diese Zeile tun. –

+0

Können Sie den Code im Debug-Modus durchgehen und sehen, wo die Zeile fehlschlägt? Es wird Zeile 4 zurückgegeben, da dies die Zeile ist, die die ConstructQuery-Methode aufruft. Wenn Sie jedoch durch den Code gehen, können Sie den wahren Schuldigen finden. –

Antwort

0

Nennen Sie es gerade:

Public Sub cboLastName_AfterUpdate() 
    ConstructQuery 
End Sub 
+0

Danke, das hat mich an dieser Zeile vorbeigeführt, jedoch Fehler in der folgenden Zeile bekommen, wenn Nz (Me.qryHardware.Form.cboUserID, "") <> "" – Michael

+0

Versuchen Sie, es zu reduzieren: 'Nz (Me! CboUserID.Value) <> "" '. – Gustav

0

Danke, dass es behoben haben! Ich musste auch den String-Wert in '' einschließen, damit er das Unterformular richtig durchsucht.