Supportnet / Forum / Datenbanken
Listenfeld als Formularfilter
Frage
Ich möchte gerne in einer Adressdatenbank ein Listenfeld als Filter einsetzten.
Es soll so aussehen, daß man im Listenfeld den Kundennamen auswählen kann und dann sollen die Detaildaten eingeblendet werden.
Kenne mich mit VB nicht so gut aus.
Was muß ich tun, damit nur noch die Datensätze des Kunden angezeigt werden, den ich im Listenfeld ausgewählt habe? ?
Antwort 1 von Nanuk
Ich hoffe, ich drücke mich nicht zu kompliziert aus:
Ich habe das an einem einfachen Beispiel ausprobiert. Eine Datenbank mit einer Tabelle "Kundendaten" sowie einem Formular "Kundendaten".
Die Tabelle hat folgende Felder:
Kdnr (AutoWert, Primärschlüssel)
Name (Text)
Vorname (Text)
Firma (Text)
Das Formular habe ich vom Assistenten mit je einem Feld entsprechend der Tabelle erstellen lassen und zu einem Einzelblattformular umgestrickt.
In dieses Formular habe ich ein ungebundenes Listenfeld (ebenfalls über den Assistenten) einfügen lassen, das seine Daten aus der Tabelle Kundendaten entnimmt (den Vorschlag, das Schlüsselfeld auszublenden habe ich akzeptiert, dieses Schlüsselfeld enthält aber den Wert, der zum Anzeigen des ausgewählten Datensatzes benötigt wird).
Anschließend habe ich noch folgende Prozedur unter der Aktion "Nach Aktualisierung" in die Eigenschaften des Listenfelds("Auswahl") eingefügt:
Kannst das ja mal für Deine Belange probieren, bei mir hat´s geklappt!!
** Sollte das mit dem Zeilenumbruch innerhalb der SQL-Anweisung nicht funktionieren, dann in eine Zeile schreiben, wobei der Unterstrich am jeweiligen Zeilenende entfernt werden muss.**
Gruß
Nanuk
Ich habe das an einem einfachen Beispiel ausprobiert. Eine Datenbank mit einer Tabelle "Kundendaten" sowie einem Formular "Kundendaten".
Die Tabelle hat folgende Felder:
Kdnr (AutoWert, Primärschlüssel)
Name (Text)
Vorname (Text)
Firma (Text)
Das Formular habe ich vom Assistenten mit je einem Feld entsprechend der Tabelle erstellen lassen und zu einem Einzelblattformular umgestrickt.
In dieses Formular habe ich ein ungebundenes Listenfeld (ebenfalls über den Assistenten) einfügen lassen, das seine Daten aus der Tabelle Kundendaten entnimmt (den Vorschlag, das Schlüsselfeld auszublenden habe ich akzeptiert, dieses Schlüsselfeld enthält aber den Wert, der zum Anzeigen des ausgewählten Datensatzes benötigt wird).
Anschließend habe ich noch folgende Prozedur unter der Aktion "Nach Aktualisierung" in die Eigenschaften des Listenfelds("Auswahl") eingefügt:
Private Sub Auswahl_AfterUpdate()
Dim SQL, Test 'Deklarieren benötigter Variablen
Test = Me.Auswahl 'Übernahme der Kundennr.
aus dem Listenfeld
SQL = "SELECT Kundendaten.* FROM Kundendaten _
WHERE Kundendaten.Kdnr=" _
& Test & ";" 'SQL-Anweisung zur Auswahl
'des gewünschten Daten-
'satzes
Me.RecordSource = SQL 'Die SQL-Anweisung wird
'Datengrundlage für das
'Formular
Kannst das ja mal für Deine Belange probieren, bei mir hat´s geklappt!!
** Sollte das mit dem Zeilenumbruch innerhalb der SQL-Anweisung nicht funktionieren, dann in eine Zeile schreiben, wobei der Unterstrich am jeweiligen Zeilenende entfernt werden muss.**
Gruß
Nanuk
Antwort 2 von Nanuk
P.S.:
Kleiner Fehler!!!
Die vierte Zeile im VBA-Code muss durch ein Hochkomma eingeleitet werden, da sie noch zumm Kommentar gehört.
(Der Code funktioniert sonst nicht...)
Nanuk
Kleiner Fehler!!!
Die vierte Zeile im VBA-Code muss durch ein Hochkomma eingeleitet werden, da sie noch zumm Kommentar gehört.
(Der Code funktioniert sonst nicht...)
Nanuk
Antwort 3 von Barbarella
Hallo Nanuk,
super, es hat geklappt!!
Vielen Dank für Deine Hilfestellung, hätte es alleine nicht hinbekommen.
Gruß
Barbarella
super, es hat geklappt!!
Vielen Dank für Deine Hilfestellung, hätte es alleine nicht hinbekommen.
Gruß
Barbarella