Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Inhalte Kombi per Option filtern

Begonnen von mad, Dezember 05, 2024, 17:28:25

⏪ vorheriges - nächstes ⏩

mad

Hallo Zusammen,

komme beim filtern eines Kombifeldes nicht weiter.

Ich habe ein Einzelformular mit folgenden Inhalten

Eine Optionsgruppe (Rahmen106) mit zwei Optionsfeldern (Option109 u. Option111).
Wenn Option109 angeklickt wird, wird in die Tabelle "Kassenbuch" in das Textfeld "Ein_Aus" eine "1" geschieben. mit der Option111 wird einen "-1" in das Textfeld "Ein_Aus" geschrieben.

Bild: option-kombi"

Unter der Optiongruppe gibt es nun eine Kombifeld "Buchkonto" das seine Werte (Texte) aus der Tabelle "Buchungskonten" holt. Aktuell ungefiltert.

Nun würde ich gerne folgendes erreichen wollen:
Wenn im aktuellen DS die "Option109" angeklickt ist, daß im Kombifeld "Buchkonto" nur noch die Texte angezeigt werden die im Textfeld "BkontoArt" der Tabelle "Buchungskonto" auch die "1" wie in der Tabelle "Kassenbuch" im Textfeld "Ein_Aus" des DS stehen. Oder eben "Option111" = "-1"

"Kassenbuch.Ein_Aus = Buchungskonto.BkontoArt"

Habe es aktuelle so gemacht:
Private Sub Buchkonto_Click()
    Dim strFilter As String
    Dim strEinAus As String

    ' Den Wert von Ein_Aus aus dem aktuellen Datensatz abrufen
    strEinAus = Me.Ein_Aus

    ' Erstellen des Filterkriteriums basierend auf dem Wert in Ein_Aus
    strFilter = "SELECT Buchungskonten.* " & _
                "FROM Buchungskonten " & _
                "WHERE Buchungskonten.BkontoArt = '" & strEinAus & "';"

    ' Setze die Datenquelle des Kombinationsfelds
    Me.Buchkonto.RowSource = strFilter
    ' Aktualisiere die Daten im Kombinationsfeld
    Me.Buchkonto.Requery
End Sub

Bekomme aber folgende Meldung die ich nicht deuten kann: Bild "Meldung"

Bin ich total auf dem Holzweg?


Gruss
mad

Beaker s.a.

Hallo,

Das Textfeld ist doch unnötig, wenn die Optionsgruppe die gleichen Werte
zurück gibt.
Du kannst also direkt mit der Optionsgruppe filtern
...WHERE Buchungskonten.BkontoArt = " & Me.Rahmen106Die "'" sind unnötig, da beide Werte Zahlen sind, - hoffe doch, dass
die "BkontoArt" eine Zahl ist, sonst ändern.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

mad

Hallo Beaker s.a.,

Werte in "BkontoArt" sind Zahlen.
Habe den Code soweit angepaßt. Funktioniert aber nur bedingt.
Wenn einer der beiden Optionen in der Optionsgruppe ausgewählt ist und ich das Kombifeld "Buchkonto" anklicke/Liste öffne ist diese noch nicht gefiltert.
Erst wenn ich einmal ausgewählt habe und dann nochmals reingehe ist der Filter aktiv.

Habe mal eine kleine abgespeckte Muster-DB hinzugefügt.


Gruss
mad

mad

Hallo Zusammen,

habe den Code jetzt unter "Bei Fokuserhalt" reingehängt und schon hats funktioniert.


Danke nochmals
mad

Knobbi38

#4
Hallo mad,

dein Beispiel passt nicht so ganz zu dem, was du hier beschreibst.

Also als Rowsource für die Kombobox:
SELECT ID, Buchungskonto FROM Buchungskonten WHERE BuchKoAktiv AND BkontoArt=[Rahmen106];
und dann im After_Update Event für die OptionGroup:
Buchkonto.Requery
Das umständliche Zuweisen einer neuen Rowsource ist nicht notwendig und kann ersatzlos entfallen.

Gruß
Knobbi38

PS:
Auch wenn es eine Muster-DB ist, solltest du zumindest für die Steuerelemente, welche im Code angesprochen werden, Präfixe verwenden. Das macht den Code nicht nur stabiler, sondern erhöht die Lesbarkeit und macht damit den Helfer die Arbeit etwas einfacher.