stefankittel
Goto Top

Wie erstellt man eine leere Bedingung in einer Abfrage in Access?

Hallo,

ich weiß nicht ob das so Sinn macht zu beschreiben, aber ich probiere es mal.
Es geht um einen Bericht und eine Abfrage in Access.

Die Abfrage hat mehrere Gruppierungen und mehrere Bedingung wie z.B. "Datum".
Diese Abfrage funktioniert und liefert das korrekt Ergebnis.

Nun möchte ich den Wert für die Bedingungen aber nicht in der Abfrage haben, sondern ich erstelle einen Filter-String und starte einen Bericht. Der ist mit dieser Abfrage verbunden und bekommt den Filter-String als Parameter.

filterString = "(Datum>=#2023-01-01 00:00:00#) and (Datum<=#2023-02-01 23:59:59#)"  
DoCmd.OpenReport "Bericht_Bericht_Rechnungen_" & KombinationsfeldBericht.Column(1), acPreview, , filterString  

Das Prinzip funktioniert in anderen Bereichen die ohne Gruppierungen sind.

Wenn ich in der Abfrage die Kriterien lösche, weil die ja später durch den Filter-String kommen, ist Access so nett und löscht diese Spalten womit die Abfrage nicht mehr funktioniert. Wenn ich statt "Bedingung" "Gruppierung" auswähle, erhalten ich viele Zahlen doppelt.

Also ist die Frage wie man leere Bedingungen in einer Abfrage haben kann.

Jemand eine Idee?

Mir fällt da aktuell nur ein, eine temporäre Tabelle mittels VBA zu erzeugen.

1

Stefan

Content-ID: 5864824862

Url: https://administrator.de/contentid/5864824862

Ausgedruckt am: 28.11.2024 um 07:11 Uhr

em-pie
em-pie 06.02.2023 um 07:10:52 Uhr
Goto Top
Moin,

Ohne die ganzen Access-Finessen zu kennen/ im Kopf zu haben:
Was passiert, wenn du im Kriterium „> 01.01.1900“ einträgst?
Wird dein Filterstring trotzdem (funktionsfähig) verwendet?
StefanKittel
StefanKittel 06.02.2023 aktualisiert um 10:15:56 Uhr
Goto Top
Zitat von @em-pie:
Was passiert, wenn du im Kriterium „> 01.01.1900“ einträgst?
Datumtypfehler

Ich habe das "Problem", dass es ca. 10 Fehlder sind nach denen abgefragt werden könnte.
Es werden aber nicht immer alle Felder verwendet.

z.B.
((Briefkopf_Kto="97 xxxx") or (Briefkopf_Kto="90 xxxx") or (Briefkopf_Kto="60 xxxxx")) and ((Auftrag_Typ="Rechnung") or (Auftrag_Typ="Gutschrift") or (Auftrag_Typ="Gutschriftsrechnung")) and (Datum>=#2023-01-01 00:00:00#) and (Datum<=#2023-02-01 23:59:59#)  
MadMax
MadMax 06.02.2023 um 17:20:42 Uhr
Goto Top
Hallo Stefan,

Gruppierungen so dynamisch einzusetzen dürfte kaum gehen, deswegen gibt es vermutlich auch keinen Parameter dafür bei DoCmd.OpenReport.

Allerdings kann man, soweit ich weiß, statt eines Filters, so wie Du das machst, eine andere Abfrage im Filterstring mitgeben. Da könntest Du also noch eine andere Abfrage erstellen, die die Gruppierung passend hat. Dummerweise kann man aber dann nicht noch zusätzlich einen weiteren Filter angeben.

Aber was gehen sollte: an einer anderen Abfrage für eine andere Gruppierung wirst Du kaum vorbeikommen, aber Du könntest direkt im Report-Objekt RecordSource oder Filter ändern, bevor Du Deinen Report aufrufst.

Gruß, Mad Max