Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

mehrfache Parameterabfrage bei Bericht mit unterbericht

Begonnen von Profitor, September 13, 2010, 13:55:04

⏪ vorheriges - nächstes ⏩

Profitor

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

DF6GL

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


database

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

Profitor

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.

database

#4
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?

Profitor

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.

DF6GL

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.

Profitor

Vielen Dank, dass du mir helfen willst.
Ich hoffe du blickst einigermaßen durch, was ich da verbrochen habe.

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

anbei, allerdings nicht vollständig getestet, weil die Pfade und Tabellen bei mir nicht alle vorhanden sind..




[Anhang gelöscht durch Administrator]

Profitor