Hallo, Ich habe in einer Access Datenbank einen bericht erstellt, der verschiedene Kreisdiagramme zur Visualisierung von Auftragseingaengen eines Handelsunternehmens enthaelt. Eingegangene Auftraege werden nach verschiedenen Kategorien dargestellt: Produktgruppen, Art des Auftrags (Telefon, Post, fax, Internet, Mail) und diverse weitere.
Alle informationen sind in einer dahinter liegenden Abfrage vorhanden. Nun moechte ich diesen Bericht nach verschiedenen Kriterien filtern (Vertriebsmitarbeiter, Filiale, Land) etc. Es gelingt mir jedoch nicht, einen entsprechenden Filter per VBA an den Report zu uebergeben. Es werden immer ALLE Datensaetze der Abfrage angezeigt. Ich will aber, dass die Abfrage erst gefiltert wird und dann die Diagramme nur fuer diesen Filter dargestellt werden. Was mache ich falsch? Ich weiss, dass ich zB innerhalb der Diagramme Filter setzen kann, das wuerde aber bedeuten, dass ich fuer jedes Filterkriterium einen neuen Report mit allen Diagrammen erstellen muss.
Hallo,
Ich habe in einer Access Datenbank einen bericht
erstellt, der verschiedene Kreisdiagramme zur Visualisierung
von Auftragseingaengen eines Handelsunternehmens enthaelt.
Eingegangene Auftraege werden nach verschiedenen Kategorien
dargestellt: Produktgruppen, Art des Auftrags (Telefon, Post,
fax, Internet, Mail) und diverse weitere.
Alle informationen sind in einer dahinter liegenden Abfrage
vorhanden. Nun moechte ich diesen Bericht nach verschiedenen
Kriterien filtern (Vertriebsmitarbeiter, Filiale, Land) etc.
Es gelingt mir jedoch nicht, einen entsprechenden Filter per
VBA an den Report zu uebergeben.
WIE wird der Bericht geöffnet?
Es werden immer ALLE
Datensaetze der Abfrage angezeigt. Ich will aber, dass die
Abfrage erst gefiltert wird und dann die Diagramme nur fuer
diesen Filter dargestellt werden. Was mache ich falsch? Ich
weiss, dass ich zB innerhalb der Diagramme Filter setzen kann,
das wuerde aber bedeuten, dass ich fuer jedes Filterkriterium
einen neuen Report mit allen Diagrammen erstellen muss.
Wenn die Diagramm-Daten aus der Datenherkunft des Berichtes stammen, dann sollte das Filterkriterium bei dessen Übergabe an die Openreport-Methode vom Diagramm berücksichjtigt werden:
Sub btnBerichtAnzeigen_Click()
Dim lngID as Long
lngID = 5
Docmd.Openreport "rptDiagramm_Bericht, acPreview,"ID = " & lngID
End Sub
Alternativ könnte auch die (gespeicherte) Berichtsabfrage als solche mit einem Kriterium (Where-Condition) beaufschlagt werden:
Sub btnBerichtAnzeigen_Click()
Dim strSQL as String, lngID as Long
lngID = 5
Currentdb.Querydefs!abf_Berichtsabfrage.SQL = "Select * from Tabelle Where ID = " & lngID
Docmd.Openreport "rptDiagramm_Bericht, acPreview
End Sub
Die weiterhin alternative Methode der Parameter-Einstellung in einer Abfrage lasse ich hier außen vor…
Gruß
Franz, DF6GL
Hallo,
wie df6gl schreibt, ist die Übergabe (Beaufschlagung) des jeweiligen Filters bei Aufruf des Berichts eine sehr gute Methode. Sehr gut unter dem Blickwinkel Steuerung: Man kann in ein Formular spezifische Buttons einfügen, von denen jeder einen anderen Teil der Daten filtert und in dem Bericht darstellen lässt. Wenn dann die Buttons auch noch sprechend beschriftet werden, kann jeder Nutzer ‚seinen‘, also den von ihm gewünschten Bericht aufrufen. (Ist noch weiter differenzierbar, will aber hier nicht ausufern, bei Bedarf fragen.)
Viel Erfolg!
Tronicrot
Danke an Euch, der Hinweis, dass man erst das SQL-Statement der Abfrage aendert, war entscheidend!
Hallo
Hast Du das Problem gelöst? Meines erachtens haben die Vorschreiber bereits alles wesentliche geschrieben.
Ein Typ wäre noch, dass Du für alle Filter eine entsprechende Abfrage erstellst. Der Vorteil ist, dass Du es bei Anpassungen einfacher hast als immer den Code anpassen zu müssen. Aber sonst ist alles nach meinem Gusto.
LIebe Grüsse und sorry for delay.Henri