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
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.Rahmen106
Die "'" sind unnötig, da beide Werte Zahlen sind, - hoffe doch, dass
die "BkontoArt" eine Zahl ist, sonst ändern.
gruss ekkehard
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
Hallo Zusammen,
habe den Code jetzt unter "Bei Fokuserhalt" reingehängt und schon hats funktioniert.
Danke nochmals
mad
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.