Supportnet / Forum / Datenbanken
Abfrage über Kombinationsfeld
Frage
Hallo, ich habe folgendes Problem:
Ich möchte in einem Endlos-Formular das auf einer Abfrage basiert erreichen, das mir nur noch die Datensätze angezeigt werden, von denen ich in einem Kombinationsfeld die gleichnamigen ausgewählt habe.
Zum Verständnis: In unserer Notarztdatenbank werden in einer Abfrage die bisher in diesem Jahr verbrauchten Medikamente aller Einsätze angezeigt und zwar alle.Im Formularkopf möchte ich nun ein Kombinationsfeld einfügen, in dem ich ein Medikament auswähle, und nach dem auswählen nur noch die Medikamente gleichen Typs aller Einsätze angezeigt bekomme, möglichst im selben Formular.
Zur Zeit mache ich das mit einem Filter, für Otto-Normalverbraucher ( Kollegen) ist das zu kompliziert.
Hat jemand eine Lösung parat?
Vielen dank vorab
Andi
Antwort 1 von oliverV
Hallo Andi,
du kannst die Datenherkunft eines geöffneten Formulars per VBA ändern.
Deine bisherige Datenherkunft dürfte ungefähr so aussehen:
[Code]
SELECT Tabelle1.ID_Medikament, Tabelle1.Feld2, ...
FROM Tabelle1...
ORDER BY Tabelle1.ID_Medikament, Tabelle1.Feld2;
Überprüfen kannst du das in der Datenherkunft deines Formulars, wechsele in die SQL-Ansicht.
Du musst nun eine zusätzliche WHERE-Klausel einfügen.
Gehe wie folgt vor:
Erstelle im Formularkopf ein ungebundenes Kombifeld mit allen Medikamenten (verwende als gebundene Spalte die ID_Medikament), nenne dieses Feld Medikamentensuche.
Gehe in das Feldereignis Nach Aktualisierung und öffne den VBA-Editor (3 Punkte am Ende der Zeile).
Verwende sinngemäß folgenden Code:
[Code]
Dim DH As String
DH = "SELECT Tabelle1.ID_Medikament, ...Tabelle1.Feld8 "
DH = DH & "FROM Tabelle1 "
DH = DH & "WHERE ID_Medikament = " & Me!Medikamentensuche
DH = DH & " ORDER BY Tabelle1.ID_Medikament, Tabelle1.Feld2;"
Me.RecordSource = DH
Me.Requery
Beachte beim Zusammensetzen der Datenherkunft die entsprechenden Leerzeichen:
Im SELECT-Teil am Ende des Strings, im FROM-Teil am Ende des Strings, im ORDER-BY-Teil am Anfang des Strings.
Sinnvoll wäre sicherlich eine zusätzliche Schaltfläche im Formularkopf, mit der du dir wieder alle Datensätze anzeigen lassen kannst.
Verwende dazu das Klick-Ereignis:
Dim DH As String
DH = "SELECT (dein bisheriger SQL-String ohne WHERE-Klausel "
Me.RecordSource = DH
Me.Req
du kannst die Datenherkunft eines geöffneten Formulars per VBA ändern.
Deine bisherige Datenherkunft dürfte ungefähr so aussehen:
[Code]
SELECT Tabelle1.ID_Medikament, Tabelle1.Feld2, ...
FROM Tabelle1...
ORDER BY Tabelle1.ID_Medikament, Tabelle1.Feld2;
Überprüfen kannst du das in der Datenherkunft deines Formulars, wechsele in die SQL-Ansicht.
Du musst nun eine zusätzliche WHERE-Klausel einfügen.
Gehe wie folgt vor:
Erstelle im Formularkopf ein ungebundenes Kombifeld mit allen Medikamenten (verwende als gebundene Spalte die ID_Medikament), nenne dieses Feld Medikamentensuche.
Gehe in das Feldereignis Nach Aktualisierung und öffne den VBA-Editor (3 Punkte am Ende der Zeile).
Verwende sinngemäß folgenden Code:
[Code]
Dim DH As String
DH = "SELECT Tabelle1.ID_Medikament, ...Tabelle1.Feld8 "
DH = DH & "FROM Tabelle1 "
DH = DH & "WHERE ID_Medikament = " & Me!Medikamentensuche
DH = DH & " ORDER BY Tabelle1.ID_Medikament, Tabelle1.Feld2;"
Me.RecordSource = DH
Me.Requery
Beachte beim Zusammensetzen der Datenherkunft die entsprechenden Leerzeichen:
Im SELECT-Teil am Ende des Strings, im FROM-Teil am Ende des Strings, im ORDER-BY-Teil am Anfang des Strings.
Sinnvoll wäre sicherlich eine zusätzliche Schaltfläche im Formularkopf, mit der du dir wieder alle Datensätze anzeigen lassen kannst.
Verwende dazu das Klick-Ereignis:
Dim DH As String
DH = "SELECT (dein bisheriger SQL-String ohne WHERE-Klausel "
Me.RecordSource = DH
Me.Req
Antwort 2 von oliverV
...Fortsetzung da meine Antwort zu lang war
Sinnvoll wäre sicherlich eine zusätzliche Schaltfläche im Formularkopf, mit der du dir wieder alle Datensätze anzeigen lassen kannst.
Verwende dazu das Klick-Ereignis:
Zu Beachten ist, das die Felddatentypen im zu suchenden Feld und im ungebunden Suchfeld übereinstimmen. Im vorstehende Beispiel ist dies der Felddatentyp Zahl (also die ID).
Bei einer Textfeldsuche verwende:
Viel Spaß und Erfolg bei Nachbauen
Gruß
Oliver
Sinnvoll wäre sicherlich eine zusätzliche Schaltfläche im Formularkopf, mit der du dir wieder alle Datensätze anzeigen lassen kannst.
Verwende dazu das Klick-Ereignis:
Dim DH As String
DH = "SELECT (dein bisheriger SQL-String ohne WHERE-Klausel "
Me.RecordSource = DH
Me.Requery
Zu Beachten ist, das die Felddatentypen im zu suchenden Feld und im ungebunden Suchfeld übereinstimmen. Im vorstehende Beispiel ist dies der Felddatentyp Zahl (also die ID).
Bei einer Textfeldsuche verwende:
DH = DH & "WHERE ID_Medikament = " & Me!Medikamentensuche & ""
Viel Spaß und Erfolg bei Nachbauen
Gruß
Oliver
Antwort 3 von Poly
TOLL! Funktioniert tatsächlich prima. Vielen Dank, prompte und klasse Lösung
Danke, Andi
Danke, Andi

