Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Filter im Kombinationsfeld mit Optionsgruppe!

Begonnen von Schakal, Dezember 09, 2010, 17:34:42

⏪ vorheriges - nächstes ⏩

Schakal

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!
:) :)

DF6GL

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


Schakal

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

DF6GL

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" ?


Schakal

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]

Schakal

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