Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Suchen von Daten nach 2 Kriterien in einem Formular





Frage

Hallo, ich habe folgendes Problem und zwar möchte ich in einem Formular in 2 ungebundenen Textfeldern nach zwei Nummer suchen. D.h. ich habe eine Abfrage erstellt in dennen mehrere Tabellen mit einandere verbunden sind. Einfach ist es ja,wenn ich im Formular mit einem Makro nach nach einem Datensatz suche. Aber wie bekomme ich es hin,wenn beide Datensätze von einandere abhängig sind.Also ich möchte eine Datensatzsuche nach 2 Kriterien.... Wäre super, wenn mir jemand helfen kann

Antwort 1 von Teddy7

Üblicherweise zeigt man das Suchergebnis in einem Endlosformular an.
Dann kann man im Auswahlformular in x ungebundenen Feldern die gewünschten Kriterien eingeben und beim Öffnen des Ergebnisformulars mitgeben.
Das sieht dann im Klick-Ereignis des Such-Buttons etwa so aus:

dim xsuche as string
xsuche = ""
if not isnull(SuchPLZ) and SuchPLZ <> 0 then
xsuche = "PLZ = " & SuchPLZ
endif
if not isnull(SuchOrt) and SuchOrt <> "" and SuchOrt <> " " then
if xsuche <> "" then
xsuche = xsuche & " and "
endif
xsuche = xsuche & " Ort = ´" & SuchOrt & "´"
endif
DoCmd.OpenForm "FrmÜbersicht", acNormal, , xsuche, acFormReadOnly

Gruß
Teddy

Antwort 2 von Skopi82

@ Teddy7

Morgen und erst mal danke für eine schnelle Hilfe!

Habe es gleich ausprobiert, es kamen auch keine Fehlermeldung. Aber leider passiert nichts!!

1. Frage....
Hab ich das richtig verstanden: Ich mache ein neues Formular auf. In diesem ziehe ich mir zwei ungebundenen Felder hin und ein Such-Button.
Wenn ich auf den Button klicken müßte er mir dann das Ergebinss meiner Suche anzeigen.
2. Frage...
Ist das Ergebnissformular leer oder ist das das Formular z.B. Kundenformular in dem ich suche?

Ist noch mal zum besseren Verständiss der Prozedur:

dim xsuche as string
xsuche = "" *Meine Variable xsuche wird was zugewiesen?*
if not isnull(SuchPLZ) and SuchPLZ <> 0 then *Die SuchPLZ ist der Name das ungebundenen Textfeldes?*
xsuche = "PLZ = " & SuchPLZ *Hier wird xsuche das Textfeld PLZ in dem gesucht werden soll (aus welchem Formular?aus dem Kundenformular?) und xsuche wird das suche Feld zugewiesen?*
endif
if not isnull(SuchOrt) and SuchOrt <> "" and SuchOrt <> " " then
if xsuche <> "" then
xsuche = xsuche & " and "
endif
xsuche = xsuche & " Ort = ´" & SuchOrt & "´"
endif
DoCmd.OpenForm "FrmÜbersicht", acNormal, , xsuche, acFormReadOnly

Danke für Deine Mühe!!!
MfG Skopi

Antwort 3 von Teddy7

Hi Skopi !
Das Ergebnisformular ist ein Endlosformular mit Datenquelle Tabelle oder Abfrage.
Der Butto öffnet dieses Endlosformular unter Vorgabe der Selektionskriterien.
Diese Selektionskriterien müssen in der Variable xsuche zusammengestellt werden wie in einer where-Klausel.
SuchPLZ und SuchOrt in meinem Beispiel sind die Feldnamen der ungebundenen Felder auf dem Selektionsformular - hier werden die gewünschten Kriterien eingebenen.
PLZ und Ort sind die Feldnamen der Felder in der Datenquelle (also in Tabelle oder Abfrage) des Ergebnisformulars.
Mein Code bewirkt, dass im Feld xsuche dann z.B. drinnsteht:
PLZ = 47111 and Ort = ´Hintertupfing´
(wenn diese Daten in den Suchfeldern eingegeben wurden)
Vorteil dieser Technik:
Wenn in beiden Selektionsfeldern nichts eingeben wurde dann bringt das Ergebnisformular alle Datensätze. Wird nur ein Selektionsfeld gefüllt, dann wird auch nur darüber eingegrenzt.

Gruß
Teddy

Antwort 4 von Skopi82

@ Teddy

Jup, so hab ich mir´s ja auch gedacht! Läuft auch schon....

Danke für Deine Hilfe

Schönes Wochenende

Skopi