Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: AccessNewbieNoob am März 11, 2022, 18:29:07

Titel: variable im Berichtsfilter
Beitrag von: AccessNewbieNoob am März 11, 2022, 18:29:07
Hallo Zusammen,

zuerst einmal danke für´s aufnehmen, ich hoffe ihr könnt mir helfen.
Ich habe einen Bericht, den ich über einen Button im Hauptformular öffnen kann.
Jetzt würde ich gerne beim öffnen des Berichts noch einen Filter setzen, den ich mir als Variable gebaut habe.
Dazu verwende ich folgenden Code:

Dim BerichtsName As String, Filter As String, Var1 As String

Berichtsname= Jahresabschluss
Filter = "[Gruppe]= '2022' And [Abgeschlossen]=False"
DoCmd.OpenReport BerichtsName, acPreview, , Filter

Wenn ich diesen Code verwende ist alles gut.

Aber wehe ich versuche das Jahr als variable zu setzen:

Var1 = ((DatePart("yyyy", Date, vbMonday))
Berichtsname= Jahresabschluss
Filter = "[Gruppe]= Var1 And [Abgeschlossen]=False"
DoCmd.OpenReport BerichtsName, acPreview, , Filter


Jetzt kommt ein Fehler in der Filter-Zeile und ich finde ihn einfach nicht. Hab auch die Semikolons durch Anführungszeichen ersetzt, geht auch nicht. Was mache ich denn falsch?  :-\
Titel: Re: variable im Berichtsfilter
Beitrag von: DF6GL am März 11, 2022, 19:19:28
Hallo,




Die Variable muss aus dem Filter-String ausgelagert werden:

.
.
Filter = "[Gruppe]= '" & Var1 & "' And [Abgeschlossen]=False"
.
.





wobei hier lt. dem Beispiel angenommen ist, dass "Gruppe" den Datentyp TEXT besitzt, was für eine Jahreszahl nicht sehr empfohlen ist.
Titel: Re: variable im Berichtsfilter
Beitrag von: MzKlMu am März 11, 2022, 19:24:18
Hallo,
versuche es einfach so:
DoCmd.OpenReport "Jahresabschluss", acPreview, , "[Gruppe]= " & Year(Date) & " And [Abgeschlossen]=False"Unter der Voraussetzung dass Gruppe eine Zahl ist. Den Rest des Codes braucht es nicht.

Wie kommt man eigentlich auf die etwas verwirrende Idee ein Feld das das Jahr als Inhalt hat Gruppe zu nennen?
PS:
Es empfiehlt sich Code zu kopieren und nicht abzuschreiben, diese Zeile ist falsch.
Berichtsname= Jahresabschluss
Titel: Re: variable im Berichtsfilter
Beitrag von: AccessNewbieNoob am März 11, 2022, 19:48:51
Wow, ihr seid klasse, Danke vielmals!

Das von Franz war es.

@ Klaus: Die Mitglieder der einzelnen Gruppen werden jedes Jahr neu zusammengewürfelt. Die einzige Orientierung war deshalb für mich das Jahr.
Und stimmt: Beim Abschreiben hat sich ein Fehler eingeschlichen. Nächstes mal wird kopiert, Sir!  ;D

Nochmals ganz vielen Dank an euch beide, bin fast schon verzweifelt.
Titel: Re: variable im Berichtsfilter
Beitrag von: MzKlMu am März 11, 2022, 23:01:53
Hallo,
wenn die Gruppe Text ist (warum?) geht auch mein Einzeiler:
DoCmd.OpenReport "Jahresabschluss", acPreview, , "[Gruppe]= '" & Year(Date) & "' And [Abgeschlossen]=False"
Titel: Re: variable im Berichtsfilter
Beitrag von: AccessNewbieNoob am März 12, 2022, 15:02:48
Hallo Klaus,

hab ich gesehen und danke auch dafür. Aber mir ist die andere Lösung lieber, somit könnte ich eventuell auch über ein Textfeld, das dann zur Variable wird gezielt nach einem bestimmten Wert suchen.

Und zu deiner Beruhigung: Die Gruppe ist eigentlich kein Textfeld, die wird berechnet. Da die Berechnung bei mir aber bereits funktioniert sah ich keinen Grund eine riesige Erklärung zu schreiben, sondern habe den wichtigen Text hier hereingeschrieben. Ich wollte nur wissen, warum die Variable nicht als Filter anerkannt wird.

...und wenn ich jetzt noch irgendwo den Button zum Bedanken und Beenden finden sollte, dann sehe ich die Frage als beantwortet und abgeschlossen an. - Danke euch beiden!
Titel: Re: variable im Berichtsfilter
Beitrag von: MzKlMu am März 12, 2022, 19:08:00
Hallo,
Zitatsomit könnte ich eventuell auch über ein Textfeld, das dann zur Variable wird gezielt nach einem bestimmten Wert suchen.
das geht auch bei meiner Version, problemlos. Du kannst das Textfeld eines Formulars ohne Variable direkt einbinden.
Wenn Gruppe eine berechneter Wert ist, und das Jahr enthält, dann sollte auch als Zahl gerechnet werden und nicht als Text. Die Verarbeitung von Zahlen ist für Access einfacher.