Einführung "VBA mit Microsoft Office"

Code Snippet "VBA Access"

Mit Kombinationsfeld einen Filter für ein Formular setzen

cboAuswahlProjekt ist das Kombinationsfeld, projektnr ist ein Fremdschlüssel der Tabelle

'Variante Ereignisprozedur
Private Sub cboAuswahlProjekt_AfterUpdate()
    If Me![cboAuswahlProjekt] <> "*" Then
      Me.Filter = "projektnr = " & str(Me![cboAuswahlProjekt]) 'Tabellenfeld = Kombinationsfeld setzen
      Me.FilterOn = True
    Else
      Me.Filter = ""
      Me.FilterOn = False
    End If
End Sub

'Variante allgemeine Prozedur
'Achtung, diese Function ist nicht allgemein verwendbar, sondern nur
'im Formular frm_a_infos, da sie abhängig von ganz spezifischen Steuerelementen
'einen Formularfilter setzt
'Aufruf anstelle Eventhandler in Form, z.B. in frm_codeexamples
Public Function funFrm_a_infosFiltern(ByRef objFrm As Form)
  Dim strFilter
  
  If objFrm![cboAuswahlProjekt] <> "*" Then
    'Beide Filter gesetzt
    If objFrm![txtFiltertext] <> "" Then
      objFrm.Filter = "projektnr = " & str(objFrm![cboAuswahlProjekt]) & _
        " AND text LIKE '*" & objFrm![txtFiltertext] & "*'"
    'Nur projektnr gesetzt
    Else
      objFrm.Filter = "projektnr = " & str(objFrm![cboAuswahlProjekt])
    End If
    objFrm.FilterOn = True
  Else
    'Nur Suchtext gesetzt
    If objFrm![txtFiltertext] <> "" Then
      strFilter = "tbl_a_infos.text Like '*" & objFrm![txtFiltertext] & "*'"
      objFrm.Filter = strFilter
      objFrm.FilterOn = True
    Else
      objFrm.Filter = ""
      objFrm.FilterOn = False
    End If
  End If
  funFrm_a_infosFiltern = True
End Function