Hallo,
ich habe einen Bericht erstellt, der auf eine Abfrage mit Parameterabfrage (Quartal) greift. Um nach einer anderen Sortierung Summen zu bilden, habe ich ein Unterbericht mit der selben Parameterabfrage eingefügt. Beim Aufrufen des Berichts wird der Parameter 4x abgefragt. Das nervt.
Kann mir jemand einen Tipp geben was ich machen muss damit nur 1x abgefragt wird?
DANKE
Hallo,
verzichte auf solche Parameter in Abfragen.
Erstelle eine (gespeicherte) Abfrage ("Berichtsabfrage") , die allen Berichten zugewiesen wird.
Mittels VBA wird ein SQL-String mit dem entspr. Filterkriterium zusammengesetzt und der gespeicherten Abfrage zugewiesen:
Dim strSQl as String, lngQuartal as Long
lngQuartal =3 'oder aus einem Textfeld oder Sonstigem holen
strSQL = "Select * from Tabelle where [Quartal]=' & lngQuartal
Currentdb.Querydefs!Berichtsabfrage.SQL = strSQL
Docmd. Openreport "rptDeinQuartalsbericht",acpreview
Hallo,
du KÖNNTEST die Abfrage dynamisch gestalten - per VBA, in dem du beispielsweise den benötigten Parameter z.B. per Inputbox
vom Benutzer erfragst und dann den SQL-String deiner Abfrage neu zusammenstellst (DAO / QueryDef).
Den so erstellten bzw. geänderten SQL-String weist du deiner Abfrage zu und rufst danach den Bericht auf.
Dadurch enthalten die Abfragen in deinem Bericht / Unterbericht alle benötigten Informationen, sodass die Parameterfrage entfällt.
HTH
Peter
Vielen Dank für eure schnelle Hilfe,
aber ich glaube, dass da meine Kenntnisse nicht ausreichen.
Ich habe bisher ausschließlich auf der Ebene Tabellen, Abfragen, Berichte, Formulare gearbeitet. Da muss ich mich wohl noch irgentwo fitt - lesen oder aufgeben.
Hallo,
aufgegeben wird ein Brief!
Das ist ja gar nicht soooo schwierig :)
Bericht aufrufen:
Ich nehme an, das wird per Button-Klick erledigt.
Somit haben wir ein Ereignis, in welches sich der Code, den DF6GL angedeutet hat einfügen ließe.
Was du noch benötigst ist ein Formularfeld (ungebunden) in welches der Benutzer die Nummer des gewünschtne Quartals eintragen kann,
bevor er den Button zum Berichtsaufrug klickt.
Dann kopierst du den Code von DF6GL in das Klick-Ereignis deines Button, öffnest deine alte Abfrage und wechselst da in die SQL-Ansicht.
Den gesamten Text kopierst du und fügst ihn an der Stelle ein (Die Abfrage kannst du JETZT wieder shließen):
strSQL = "Select * from Tabelle where [Quartal]=' & lngQuartal
Um die Benutzereingabe in den Code zu holen fügst du gleich unter der Zeile mit 'Dim strSQL ...' folgendes ein:
lngQuartal = Me!NameDeinesTextfeldes
Die Stelle, an der du das Quartal als Parameter an die Abfrage übergibst entfernst du aus dem SQL-Text deiner Abfrage.
(KANN z.B so lauten where [Quartal]= & [Bitte Quartal eingeben] )
Mit der nächsten Zeile wird deiner Abfrage dann der Neue, veränderte SQL-String zugewiesen (die Abfrage wird dabei neu definiert)
Currentdb.Querydefs!DeineBerichtsabfrage.SQL = strSQL
Mit der letzten Code-Zeile wird dann der Bericht aufgerufen und in der Druckvorschau angezeigt.
Docmd. Openreport "rptDeinQuartalsbericht",acpreview
Der Bericht baut nun auf der geänderten Abfrage auf und zeigt die Daten aus dem eingegebenen Quartal an.
Ich hoffe das war so halbwegs verständlich?
oh je, oh je, ich habe wirklich keine Ahnung :'(
> ich habe das Formularfeld,
> ich habe den Code von DF6GL in das Klick-Ereignis eingefügt - "Micrsoft kann das Macro nicht finden"
ich muss wohl einige Platzhalter durch den richtigen Namen ersetzen.
Die Abfrage mit dem Quartal heisst "200 Umsatzsteuer Summen"
Der Bericht heisst "200 Umsatzsteuer Voranmeldung"
Das Formular heisst "Quartal Eingabe"
Was ist mit den " ?
> den SQL-Text aus der Abfrage in den Klick hinter "strSQL = "kopieren und den Rest löschen?
den Rest habe ich (glaube ich) verstanden.
Hallo,
bevor wir hier weiter rätseln, lad die DB mal hier hoch (komprimiert/repariert, evtl. datenreduziert, gezippt, A2003-Version) .
Dann baue ich (oder jemand Anderes) den Code ein.
---> der Code darf nicht in der Ereigniszeile "beim Klicken" eingetragen werden, sondern es sind zunächst die 3 Pünktchen am rechten Ende dieser Zeile doppelt zu klicken , sodann "Code" auszuwählen und im folgenden VBA-Editor in die erzeugte Ereignisprozedur einzutragen.
Vielen Dank, dass du mir helfen willst.
Ich hoffe du blickst einigermaßen durch, was ich da verbrochen habe.
[Anhang gelöscht durch Administrator]
Hallo,
anbei, allerdings nicht vollständig getestet, weil die Pfade und Tabellen bei mir nicht alle vorhanden sind..
[Anhang gelöscht durch Administrator]
klappt SUPER!!
vielen Dank