Data Watch - Einsatz am Limit

Filter automatisch erstellen

Das erste Feld muss im konkreten Fall durch den eindeutigen Feldnamen im anzuzeigenden Formular, das zweite Feld durch denjenigen der Abfrage ersetzt werden. Die beiden Feldnamen können, aber müssen nicht identisch sein.

Den angepassten Code finden Sie in Listing 9, dort wird auch der nun dreiteilige Inhalt der Beschreibung anhand des senkrechten Strichs auf drei Variablen verteilt.

Private Sub btnFormular_Click()
Dim qryAktuell As QueryDef
Dim strDescript As String
Dim strFormular As String
Dim strTabelle As String
Dim strFeld As String
'Eigenschaften der Abfrage auslesen
Set qryAktuell = CurrentDb.QueryDefs( _
"qry" & Me.QTyp.Value & Me.QName.Value)
strFeld = qryAktuell.SQL
'Fehler-Kontrolle aus, weil Beschreibung/Description-
'Eigenschaft fehlen könnte
On Error Resume Next
'Text vor erstem senkrechten Strich
strDescript = qryAktuell.Properties("Description").Value
strFormular = Left(strDescript, InStr(strDescript, "|") - 1)
'mittlerer Text zwischen senkrechten Strichen
strDescript = Mid(strDescript, Len(strFormular) + 2)
strTabelle = Left(strDescript, InStr(strDescript, "|") - 1)
'Text nach letztem senkrechten Strich
strDescript = Mid(strDescript, Len(strTabelle) + 2)
strFeld = strDescript
'falls Eigenschaft vorhanden war
If Err.Number = 0 Then
On Error GoTo 0
'Hilfsformular in Dialogmodus und mit Filter
DoCmd.OpenForm strFormular, , , _
strFeld & " IN (SELECT " & strTabelle & _
"." & strFeld & " FROM [" & _
qryAktuell.Name & "])", , acDialog
Else
On Error GoTo 0
'Fehlermeldung
MsgBox "Formularname für " & Me.QName.Value & " fehlt!", _
vbCritical
End If
End Sub

Analyse auch von VBA-Funktionen

Lange versprochen, aber noch nicht eingelöst ist die Berücksichtigung von Funktionen zusätzlich zu Abfragen. Es ist natürlich ein Leichtes, die gewünschten Funktionen einfach in Abfragen aufzurufen, dazu reicht die bisherige Technik der Abfragenliste. Doch dann müssen Sie für jede Funktion manuell eine zugehörige Abfrage erstellen und haben die doppelte Arbeit.

Wenn Sie dagegen die Funktionen ebenso namentlich kennzeichnen wie die Abfrage und optimalerweise in einem einzigen Modul sammeln, können sie auch automatisch ermittelt werden.