Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage mit Daten aus Formular durchführen -> leere Felder ignorieren

Begonnen von Samurai2_de, April 30, 2015, 04:55:32

⏪ vorheriges - nächstes ⏩

Samurai2_de

Hallo ihr Wissenden!

Ich habe erneut ein (kleines?) Problem mit meiner Datenbank.
Ich soll nun noch ein Suchformular einbauen, mit dem die Datensätze auf die Erfüllung bestimmter Kriterien durchsucht werden sollen und das Ergebnis ausgegeben werden soll.

Beispiel:
Im Suchformular gibt es die Textfelder "Anlage Kundendaten vom" und "Anlage Kundendaten bis", sowie "letzte Bestellung vom" und "letzte Bestellung bis".
Die Abfrage soll nun, wenn die beiden Felder zur Anlage der Kundendaten ausgefüllt wurden, alle Kundendaten anzeigen, die im eingegebenen Zeitraum angelegt wurden. Dies funktioniert mit der ZWISCHEN-Funktion im Kriterium des Feldes auch sehr gut.
Da nun aber auch eine teilqualifizierte Suche möglich sein soll, kann es sein, dass der Bediener des Formulars die Felder "Anlage Kundendaten vom" und "Anlage Kundendaten bis" im Formular leer lässt und nur die Felder "letzte Bestellung vom" und "letzte Bestellung bis" ausfüllt. In dem Falle soll die Abfrage alle Datensätze auswerfen, die in den eingegeben Zeitraum der letzten Bestellung fallen, unabhängig davon, wann die Kundendaten angelegt worden sind.

Wie realisiere ich dies nun in der Abfrage im Kriterium für das Feld "Anlage Kundendaten"? Lasse ich das Kriterium
ZWISCHEN [Forms].[Suchformular].[Anlage_Kundendaten_vom] und [Forms].[Suchformular].[Anlage_Kundendaten_bis]
unverändert stehen, werden keine Treffer mehr ausgeworfen, da in den beiden Feldern ja keine Werte enthalten sind.

Und zu dem Suchformular auch noch eine zweite Frage:
In dem Suchformular gibt es u.a. eine Optionsgruppe "Zahlungsart" mit den Möglichkeiten "Bar", "Überweisung" und "keine Entscheidung".
In der zugehörigen Tabelle sind die möglichen Zahlungsarten für die Kunden als Checkboxen hinterlegt, da ein Kunde entweder die Zahlungsart "Bar" oder "Überweisung" oder auch beide Zahlungsarten haben kann.
Wie muss die Abfrage aussehen, dass z.B. bei der Optionsauswahl "keine Entscheidung" sowohl die Kunden angezeigt werden, die nur bar zahlen sollen, als auch die Kunden, die nur per Überweisung zahlen können und auch die Kunden, die sowohl in bar als auch per Überweisung zahlen können?
Die Felder "Bar" und "Überweisung" der Tabelle sind in der Abfrage enthalten.

Ich hoffe, ich konnte meine wirren Gedanken halbwegs verständlich ausdrücken, das Denken wird um diese Uhrzeit gerade etwas schwer.

Ich freue mich auf eure kompetenten Antworten und verbleibe mit freundlichem Gruß

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

MaggieMay

Hallo,

zu 1)
das kannst du folgendermaßen lösen:
ZWISCHEN [Forms].[Suchformular].[Anlage_Kundendaten_vom] und [Forms].[Suchformular].[Anlage_Kundendaten_bis] ODER [Forms].[Suchformular].[Anlage_Kundendaten_vom] Ist Null

zu 2)
das kannst du ähnlich lösen, und zwar indem du so etwas wie folgt als Kriterium schreibst:=[Forms].[Suchformular].[Zahlungsart] ODER [Forms].[Suchformular].[Zahlungsart]  = 3
Freundliche Grüße
MaggieMay

Samurai2_de

zu 1) Problem ist gelöst, funktioniert hervorragend!

zu 2) Das Problem besteht leider immer noch. Ich denke auch, dass ich weiß, woran es liegt. Nur leider fällt mir noch keine Lösung ein:

Die Felder "Barzahlung" und "Überweisung" sind in der Tabelle als Felddatentyp "Ja/Nein" definiert.
Ich habe die Abfrage so definiert, dass die Tabellenfelder "Anlage Kundendaten", "letzte Bestellung" sowie "Barzahlung" und "Überweisung" alle über eine Abfrage laufen.
Wenn ich nun beispielsweise in meinem Suchformular die Felder "Anlage_Kundendaten_vom" und "Anlage_Kundendaten_bis" leer lasse und in der Optionsgruppe die Auswahl "Überweisung" treffe, werden mir noch immer alle Kunden angezeigt.
Ich vermute, dass dies durch das unter 1) definierte Kriterium "Ist Null" bei "Anlage_Kundendaten_vom" geschieht? Müsste aber nicht die Suche durch die Auswahl "Überweisung" in der Optionsgruppe trotzdem eingegrenzt werden? Oder liegt hier ein Problem vor, da ich die Zahlungsarten einzeln als Tabellenfelder mit dem Felddatentyp "Ja/Nein" definiert habe?
Und last but not least: muss der Code zu 2) von MaggieMay angeglichen werden oder habe ich in meiner Abfrage einen Denkfehler?

Vielen Dank noch einmal für Eure Hilfe!

Gruß

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

MaggieMay

Es wäre ausgesprochen hilfreich, wenn du einfach mal den SQL-Code der Abfrage posten würdest. ;-)

Freundliche Grüße
MaggieMay

Samurai2_de

Okay, kleines Update:

Ich habe mein Suchformular etwas umgebaut und die Optionsgruppe "Zahlungsart" entfernt. Dafür gibt es jetzt die Optionsgruppen "Barzahlung" und "Überweisung", beide haben die Auswahlmöglichkeiten "Ja", "Nein" und "keine Einschränkungen".
Der Auswahlmöglichkeit "Ja" habe ich den Optionswert -1 zugewiesen, der Auswahlmöglichkeit "Nein" den Optionswert 0 und der Auswahlmöglichkeit "keine Einschränkungen" den Optionswert 1.
Die Abfrage führt jetzt bei der Auswahl "Ja" oder "Nein" zum Erfolg (aber weiterhin nur, wenn die Formularfelder "Anlage_Kundendaten_vom", "Anlage_Kundendaten_bis", "letzte_Bestellung_vom" und "letzte_Bestellung_bis" ausgefüllt sind). Lediglich bei der Auswahl "keine Einschränkungen" fördert die Abfrage nun gar keine Ergebnisse mehr zu Tage.
Der Code für die Abfrage der Tabellenfelder "Barzahlung" und "Überweisung" lautet:
=[Forms]![Suchformular]![Barzahlung] ODER [Forms]![Suchformular]![Barzahlung] = 1
bzw.
=[Forms]![Suchformular]![Überweisung] ODER [Forms]![Suchformular]![Überweisung] = 1

... ich sollte wahrscheinlich langsam mal aufhören, im Nachtdienst an der Datenbank zu basteln, denn nach müde kommt blöd.  ;)

Den SQL-Code liefere ich morgen nach dem Aufstehen nach.

Danke nochmals für die schnelle und nette Hilfe!

Gruß aus dem Nachtdienst

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

Samurai2_de

So, nach längerer Zeit (sorry dafür!) möchte ich diesen Thread jetzt auch schließen. Nachdem ich mit wachen Augen noch einmal den SQL-Code meiner Abfrage durchgeguckt habe, habe ich den Fehler auch selbst gefunden. Ist schon Mist, wenn man irgendwann zwischendurch AND und OR verwechselt... ::)
Naja, auf jeden Fall noch einmal recht herzlichen Dank für die Hilfe und den Wink mit dem ganzen Zaun mit dem zu postenden SQL-Code...  ;)

Gruß aus der Nacht (ja, schon wieder)

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!