Hallo,
habe ein Formular mit Unterformular.
Über folgenden Code wird ein Filter gesetzt.
Code:
Private Sub sucheSysFMIDinUfml1_Click()
' Variante 1: RecordSource ändern
' Me!UfmlBearbeitungEloxx.Form.RecordSource = GetRecordSource
' Variante 2: Filter anwenden
With Me!UfmlBearbeitungEloxx.Form
.Filter = GetCriteria
.FilterOn = (Len(.Filter) > 0)
End With
Me!Equipment.SetFocus
End Sub
Private Function GetRecordSource() As String
Dim SqlText As String: Dim Krit As String
SqlText = "SELECT * FROM A_Bearbeitung_eLoxx"
Krit = GetCriteria
If Len(Krit) > 0 Then
SqlText = SqlText & " WHERE " & Krit
End If
GetRecordSource = SqlText
End Function
Private Function GetCriteria() As String
Dim Krit As String
With Me!Equipment
If Len(.Value) > 0 Then Krit = Krit & " AND sysFMID LIKE '" & Replace(.Value, "'", "''") & "*'"
End With
If Len(Krit) > 0 Then
Krit = Mid(Krit, 5)
End If
GetCriteria = Krit
End Function
Ist die Bearbeitung erledigt und springe ich im Formular einen DS weiter, werden die Daten im Unterformular nicht aktualisiert. Das heißt, es sollen alle DS im UF wieder dargestellt werden, also ungefiltert.
Besonderheit !!! Es gibt keine direkte Verbindung zwischen dem Formular und dem Unterformular, die Zusammenstellung im Unterformular geschieht durch den Filter. Das muß so sein, weil es zur Nachbearbeitung der DS im Unterformular verwendet wird, und noch keine ID oder ähnliches gibt die zur Verbindung genutzt werden kann.
Diese wird in Handarbeit (die Daten müssen gesichtet werden) in dem Arbeitsgang erledigt.
Hallo!
Du kannst auf das Current-Ereignis des Hauptformulars reagieren und dort den Filter vom Unterformular deaktivieren.
Private sub Form_Current()
Me.UfmlBearbeitungEloxx.Form.FilterOn = False
end Sub
mfg
Josef
Hallo Josef P.
ich habe mir heute zum Samstag noch mal die Arbeit gemacht und bin die 130km zur Arbeit gefahren um vor meinem Urlaub doch noch alles fertig zu machen.
Ich habe Deinen Tip gerade eingebaut .... fehlen mir die Worte, klappt super !
DANKE. :D