Access: Abfrage nach Auswahl in Kombinationsfeld aktualisieren
Ich habe ein kleines Problem
ich habe ein Formular mit 4 Kombiboxen.
Die Herkunft bezieht sich immer auf die gleiche Tabelle, aber auf die verschiedene
Spalten. Was ich möchte ist, wenn ich den Text in Kombibox 1 auswähle, dann will
ich in der zweiten Kombibox nur die Datensätze angezeigt bekommen, welche mit
Kombibox 1 passen.
Ich habe schon hier auf paar Themen gesehen, aber irgendwie klappt das nicht.
Was ich bis jetzt gemacht habe ist folgendes.
In Kombibox 1 habe in im Feld "nach Aktualisierung", die "Ereignisprozedur"
gestartet und den code so eingetippt:
Private Sub Spalte_1_AfterUpdate()
Spalte_2.Requery
End Sub
Leider werden die Datensätze in Spalte 2 gar nicht upgedatet, sondern ich sehe
alles.
Kann mir bitte jemand genau sagen, was ich falsch mache?
und mir vielleicht detailliert beschreiben, wie man es richtig umsetzt?
Danke
Antwort schreiben
Antwort 1 von Marie vom 04.06.2021, 01:37 Options
Also dein Kombi 1 heißt Spalte_1 und dein Kombi 2 heißt Spalte_2 oder was??
Zitat:
Private Sub Spalte_1_AfterUpdate()
Spalte_2.Requery
End Sub
Leider werden die Datensätze in Spalte 2 gar nicht upgedatet, sondern ich sehe alles.
Also wo hast Du Deiner Meinung nach geschrieben, nach welchem Kriterium gefiltert werden soll? Und was soll Requery bewirken?
versuchs mal so:
Private Sub Kombinationsfeld1_AfterUpdate()
Kombinationsfeld2 = Null
End Sub
Private Sub Kombinationsfeld2_Enter()
Dim SQL As String
SQL = "SELECT Spalte2 FROM deineTabelle"
If Not IsNull(Me.Kombinationsfeld1) Then SQL = SQL & " WHERE Spalte1='" & Me!Kombinationsfeld1 & "' "
Kombinationsfeld2.RowSource = SQL
End Sub
Falls Du nicht klarkommst lies Dir das mal durch:
http://www.office-loesung.de/ftopic6700_0_0_asc.phpGruß marie
Antwort 2 von Ruslan vom 16.06.2021, 22:43 Options
Hallo Marie,
danke für die Antwort,
irgendwie scheint es bei meiner Lösung nicht zu funktionieren :(
woran es liegt weiß ich leider nicht,
der Link von dir war gut, aber nicht in bei meiner Lösung. Den dort geht es um die 3 Tabellen, und jede
Tabelle hat noch einen Aktivschlüssel.
Bei meiner jedoch ist alles in einem. Man kann es so vorstellen wie z.b.
die Tabelle heisst z. B.
01 Auto
dort gibt es solche Darstelltung
Auto Marke Аuto Modell Auto Motor
Audi A4 2,0
Audi A6 2,4
BMW 320 2,0
BMW 535 3,5
Wenn ich deine Formel so einsetzte dann müsste es so heissen:
Private Sub Auto_Marke_AfterUpdate()
Auto_Modell = Null
End Sub
Private Sub Auto_Modell_Enter()
SQL = "SELECT Level_Modell FROM [tabelle]![T01 Auto]"
If Not IsNull(Me.Auto_Marke) Then SQL = SQL & " WHERE [Auto Marke]='" & Me![Auto_marke] & " ' "
Auto_Modell.RowSource = SQL
End Sub
Ich nutze das Office Access 2007.
Danke für die Antwort bzw. die Lösung
Ruslan
Antwort 3 von Marie vom 17.06.2021, 01:44 Options
Zitat:
SQL = "SELECT Level_Modell FROM [tabelle]![T01 Auto]"
Hm, das verstehe ich nicht, was Du da schreibst, "DeineTabelle" heisst "T01 Auto", war um tippst Du nicht ganz konkret meinen Text ab?? Dann muss es heißen
SQL = "SELECT Spalte2 FROM [T01 Auto]"
oder bestenfalls
SQL = "SELECT [T01 Auto].Spalte2 FROM [T01 Auto]"
so hatte ich es ausprobiert, und so hatte es funktioniert. Wenn Du halt künftig gleich die richtigen Tabellen und Spaltennamen nehmen würdest hätte ich es damit ausprobiert und man würde Deinen Fehler schneller orten können, nun musste halt selbst mit Deinen bezeichnungen umändern, aber bitte nur eckige Klammern setzen bei namen mit Leerzeichen, sonst nix ändern. Und künftig solchen Blödsinn unterlassen, keine Leerzeichen oder Sonderzeichen in Tabellennamen oder Feldnamen.
Datensatzherkunft von Kombinationsfeld1 ist bei mir:
SELECT DISTINCTROW deineTabelle.Spalte1 FROM deineTabelle;
also:
SELECT DISTINCTROW [T01 Auto].Spalte1 FROM [T01 Auto];
Datensatzherkunft von Kombinationsfeld2 muss leerbleiben, weil Du ja per Code füllst.
Zitat:
Kombinationsfeld2.RowSource = SQL
Und wenn etwas nicht geht kann ich dir nur weiterhelfen wenn du mir sagst was nicht geht, bzw welche fehlermeldung wo erscheint
Gruß Marie
Antwort 4 von Marie vom 17.06.2021, 01:59 Options
Im übrigen hast Du vergessen
Dim SQL As String
zu schreiben, dadurch kriegste natürlich auch eine Fehlermeldung. Und den fehler hätte ich sofort geortet, wenn Du die fehlermeldung hingeschrieben hättest :-(
Antwort 5 von Ruslan vom 24.06.2021, 08:46 Options
Hallo,
is es möglich dir meine DB zu mailen? irgendwie habe ich glaube ich einen blackout bei der geschichte.
Oder hast du Skype?
Danke und Gruß
Ruslan
Antwort 6 von Marie vom 27.06.2021, 14:30 Options
nö, office 2007 hab ich zwar irgendwo installiert, aber ich arbeite nicht damit, kenn mich irgendwie noch nicht aus mit Access 2007 und hab auch keine Zeit im Moment mich damit zu befassen. Warum kannst Du nicht versuchen hier zu schreiben was Du tust und welche Fehlermeldung kommt? Ich hab das getestet, wie ich es Dir oben geschrieben habe. Und Du brauchst locker mal eine Woche bis Du überhaupt hier reinschaust, das erste Mal sogar zwei Wochen, und dann bist Du noch zu bequem das mal konsequent auszuprobieren und hier zu schreiben was nicht funktioniert? Das finde ich nicht in Ordnung, das ist ein Forum wo auch andere mit demselben Problem die Antworten für sich verwenden können sollten, die haben nichts davon wenn ich in Deiner Datenbank schaue was Du jetzt nicht verstanden hast.
Wenn Du jetzt mal konkret das tust was ich geschrieben habe und mir ordentlich erklärst was wie wo nicht läuft, dann schau ich gerne mal rein, aber nicht wenn Du nach Wochen mal sagst: Ich kanns nicht und mich rumrätseln lässt was Du nicht hinkriegst.
Gruß Marie
Antwort 7 von ruslan7576 vom 29.06.2021, 15:52 Options
Ich habe es gelöst das Problem
und der Code lautet dann so:
Private Sub Bezeichnung_AfterUpdate()
Dim SQL As String
SQL = "select distinct [tabelle].[spaltenbezeichunung] from [tabelle]"
if not IsNull (Me.Bezeichung Kombibox.Value) Then SQL = SQL & "where [tabelle].[spaltenbezeichnung]= '"
+ Me.Bezeichung Kombibox.Value + "'"
Bezeichnung Kombibox.Rowsource = SQL
Bezeichnung Kombibox.Requery
End Sub