Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: SG05 am April 23, 2017, 11:38:13

Titel: WhereCondition für die Datenauswahl
Beitrag von: SG05 am April 23, 2017, 11:38:13
Hallo zusammen,

ich erzeuge mit folgendem Code einen Bericht:
DoCmd.OutputTo acOutputReport, "MeinBericht", acFormatPDF, "C:\Inventar_" & Format(LfdInventarNr, "00") & ".pdf"

Gerne würde ich den Bericht aus weiteren Formularen aufrufen. Normalerweise benutze ich die "WhereCondition".

Beispiel, wenn ich den Bericht "nur" öffne:
DoCmd.OpenReport stDocName, acNormal, , "LfdInventarNr= Forms!MeinFormular01!LfdInventarNr"

Steht die "WhereCondition" bei "Output" nicht zur Verfügung?

Danke für Eure Unterstützung...
Titel: Re: WhereCondition für die Datenauswahl
Beitrag von: DF6GL am April 23, 2017, 13:38:31
Hallo,

nein, eine Where-Condition-Übergabe bei Outputto steht nicht zur Verfügung.

Es muss der SQL-String der zugrundeliegenden Berichts-Abfrage ("abf_rptInventar") modifiziert werden.

Z. B. mit Hilfe einer Vorlage-Auswahlabfrage ("abf_rptInventar_Template")  ohne Where und Order/Group By ("Select * From Tabelle1;")  :

.
.

Currentdb.Querydefs!abf_rptInventar.SQL= Replace(Currentdb.Querydefs!abf_rptInventar_Template.SQL,";","LfdInventarNr= " & Me!LfdInventarNr)    'wenn inventarNr den Datentyp Long besitzt
DoCmd.OutputTo acOutputReport, "MeinBericht", acFormatPDF, "C:\Inventar_" & Format(LfdInventarNr, "00") & ".pdf"



Dies ist nur beispielhaft zu sehen. Es gibt bessere Methoden, die Where-Condition einzufügen.
(Zuweisen eines direkt mit VBA generierten SQL-Strings an die Abfrage-Eigenschaft, Verwenden eines Where-Conditions-Parameters, Verwenden der Abfrage-Parameters-Auflistung usw.)
Titel: Re: WhereCondition für die Datenauswahl
Beitrag von: PhilS am April 23, 2017, 17:32:29
Zitat von: DF6GL am April 23, 2017, 13:38:31nein, eine Where-Condition-Übergabe bei Outputto steht nicht zur Verfügung.

Es muss der SQL-String der zugrundeliegenden Berichts-Abfrage ("abf_rptInventar") modifiziert werden.
Die erste Aussage ist korrekt, aber es gibt eine einfachere Möglichkeit dasselbe Ergebnis zu erreichen, ohne die SQL-Abfrage zu ändern.

1. Den Bericht in der Vorschau-Ansicht mit der gewünschten Where-Condition öffnen. Das kann auch unsichtbar (acHidden) erfolgen.
2. Dann einfach DoCmd.OutputTo für diesen Bericht aufrufen. Dann wird er so, wie er bereits geöffnet ist, ausgegeben.
Titel: Re: WhereCondition für die Datenauswahl
Beitrag von: DF6GL am April 23, 2017, 17:44:52
Hi,

ja, in der Tat, die einfachste Methode habe ich außen vor gelassen, gemäß der Prämisse:  Warum einfach, wenn es auch kompliziert geht... :o  :)