Hallo,
ich habe mal wieder ein seltsames Problem!
Ich habe in einem Formular eine Optionsgruppe erstellt mit drei Radiobuttons.
1. Alle Anzeigen
2. Ingenieure
3. Techniker
Diese Optionsgruppe soll entweder alle Datensätze anzeigen, oder wenn ich Ingenieure wähle, nur diese und bei Techniker eben nur die Techniker.
Diese Filter Option funktioniert soweit sehr gut und filtern tut es auch richtig nach den entsprechenden Kriterien.
Jetzt kommt aber das Problem!
Ich habe zu Ingenieuren und den Technikern noch jeweils ein Kombinationsfeld erstellt, das Daten aus einer Tabelle entnimmt. Diese Kombinationsfelder befinden sich in der Optionsgruppe.
D.h. wenn ich Ingenieure mit dem Radiobutton auswähle, erscheint das Kombinationsfeld für die Ingenieure aber das Kombinationsfeld für die Techniker bleibt unsichtbar und vice versa, hier der Code dazu
Private Sub IngTechFilter_AfterUpdate()
If IngTechFilter = 1 Then
Me.FilterOn = False
Me!IngenieurFilter.Visible = False
Me!TechnikerFilter.Visible = False
ElseIf IngTechFilter = 2 Then
Me.Filter = "IngTech = '1'"
Me!IngenieurFilter.Visible = True
Me!TechnikerFilter.Visible = False
Me.FilterOn = True
ElseIf IngTechFilter = 3 Then
Me.Filter = "IngTech = '2'"
Me!TechnikerFilter.Visible = True
Me!IngenieurFilter.Visible = False
Me.FilterOn = True
Else
Me.FilterOn = False
End If
Soweit auch alles richtig, es wird weiter gefiltert und zwar korrekt und auch bei der Auswahl des Technikers und bei Alle Anzeigen.
Was ich möchte ist das wenn ich einen Wert (text) im Kombinationsfeld(Ingenieur oder Techniker) wähle, eine weitere Filtrierung statt findet.
D.H ich wähle Ingenieure(Filter wird gesetzt – alle Ingenieure wurden gefiltert) und jetzt im Kombinationsfeld wähle ich den Wert z.B. ,,Rückbau" und jetzt wird gefiltert alle Ingenieure im Rückbau.
Ich habe mit folgendem code versucht bin aber leider gescheitert.
Private Sub IngenieurFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung=" & Me!IngenieurFilter & ""
FilterOn = True
End Sub
Private Sub TechnikerFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung =" & TechnikerFilter & ""
FilterOn = True
End Sub
Vielleicht hat jemand eine Idee oder eine Lösung!
:) :)
Hallo,
es fehlen lediglich die Hochkommata um den Kriteriumswert:
Private Sub IngenieurFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung='" & Me!IngenieurFilter & "'"
FilterOn = True
End Sub
Private Sub TechnikerFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung ='" & TechnikerFilter & "'"
FilterOn = True
End Sub
Hallo .
danke für den Tipp habe ich gemacht aber jetzt passiert folgendes.
Sobald ich den Wert des Kombinationsfeldes gesetzt habe wird zwar gefiltert aber das Formular ist leer, wie bei einem neuem Datensatz. Wenn ixh dann den filter wieder auf Alle Anzeigen setze ist alls wieder da.
M.a.w sobald ich ein Kombinationsfeld einen Wert setze möchte das Formular einen neune Datensatz haben.
Hier nochmal mein Code für das ganze FOrmular:
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
' Optionsgruppenwert so setzen, dass er den Filteraktionen
' des Anwenders entspricht.
If ApplyType = acShowAllRecords Then
IngTechFilter = 1 ' Option Alle Bewerber setzen
End If
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
' Wenn der Anwender eine Adresse eingegeben hat,
' die Postleitzahl überprüfen
Dim blnOK As Boolean
If Not IsNull(Adresse) And IsNull(Postleitzahl) Then
blnOK = Confirm("Sie haben keine Postleitzahl eingegeben. Trotzdem speichern?")
If Not blnOK Then 'Benutzer hat Abbrechen gewählt.
Postleitzahl.SetFocus 'Zurück zum Postleitzahlen-Feld
Cancel = True 'Speichern wird abgebrochen
End If
End If
End Sub
Private Sub Form_Current()
DatenSatzSuchen = [Kontakt-Nr] ' Das Kombinationsfeld Datensatz suchen aktualisieren.
If Ingenieur_Techniker = 1 Then
Me!Ingenieur.Visible = True
Me!Techniker.Visible = False
ElseIf Ingenieur_Techniker = 2 Then
Me!Ingenieur.Visible = False
Me!Techniker.Visible = True
End If
End Sub
Private Sub DatenSatzSuchen_Enter()
DatenSatzSuchen.BackColor = 16777215 ' Hintergrundfarbe zu weiß ändern
End Sub
Private Sub DatenSatzSuchen_Exit(Cancel As Integer)
DatenSatzSuchen.BackColor = 12632256 ' Hintergrundfarbe zu grau ändern
End Sub
Private Sub Ingenieur_Techniker_AfterUpdate()
If Ingenieur_Techniker = 1 Then
Me!Ingenieur.Visible = True
Me!Techniker.Visible = False
ElseIf Ingenieur_Techniker = 2 Then
Me!Ingenieur.Visible = False
Me!Techniker.Visible = True
End If
End Sub
Private Sub IngenieurFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung='" & Me!IngenieurFilter & "'"
FilterOn = True
End Sub
Private Sub TechnikerFilter_AfterUpdate()
Me.Filter = "IngTechBeschreibung ='" & TechnikerFilter & "'"
FilterOn = True
End Sub
Private Sub IngTechFilter_AfterUpdate()
If IngTechFilter = 1 Then
Me.FilterOn = False
Me!IngenieurFilter.Visible = False
Me!TechnikerFilter.Visible = False
ElseIf IngTechFilter = 2 Then
Me.Filter = "IngTech = '1'"
Me!IngenieurFilter.Visible = True
Me!TechnikerFilter.Visible = False
Me.FilterOn = True
ElseIf IngTechFilter = 3 Then
Me.Filter = "IngTech = '2'"
Me!TechnikerFilter.Visible = True
Me!IngenieurFilter.Visible = False
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub
Hallo,
verstehe nicht (mehr) was Du machen willst...
Wenn ein neuer DS bei einer Filterung angezeigt wird, dann gibt es keine Datensätze mit dem akt. Filterkriterium...
Was soll passieren, wenn Du im Kombi "einen Wert setzt" ?
Hallo DF6GL
Zu erläuterung habe ich ein PDF mit angehängt. Ich hoffe das die erklärung was ich möchte jetzt beser da gestellt ist
Danke für Deine HilfeWenn Du das PDF öffnest siehst Du auch mein Formular
[Anhang gelöscht durch Administrator]
Hallo Franz,
problem gelöst und zwar muss der Code so heißen:
Private Sub IngenieurFilter_AfterUpdate()
Me.Filter = "IngTech = '1' AND IngTechBeschreibung='" & IngenieurFilter.Column(1) & "'"
Me.FilterOn = True
End Sub
Private Sub TechnikerFilter_AfterUpdate()
Me.Filter = "IngTech = '2' AND IngTechBeschreibung ='" & TechnikerFilter.Column(1) & "'"
Me.FilterOn = True
End Sub
Danke für die Hilfe