Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Parameterabfrage für Bericht
zurück: Keinen Standardpfad festlegen weiter: Datensatz überprüfen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
01. Dez 2009, 18:29
Rufname:

Parameterabfrage für Bericht - Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo zusammen,

ich weiß, dass die Frage schon mehrfach gestellt worden ist, habe auch schon viel probiert und komme doch nicht auf einen grünen Zweig.

Ich habe eine Parameter(auswahl)abfrage, die ich als Datenbasis für einen Bericht hernehme. Die Auswahlabfrage beinhaltet zwei Bedingungsfelder (Aggregatsfunktion), für die ich die Kriterien übergeben möchte. Hierzu habe ich zwei Parameter in den jeweiligen Kriterienfeldern definiert.

Per VBA-Code durchlaufe ich einen Datensatz, der mir in dem Fall die Kontaktpersonen nennt. Diese Person möchte ich an die Abfrage übergeben, wodurch die Ergebnisse gefiltert werden. Die Abfrage selbst benötige ich aber eigentlich nur, um den Bericht korrekt aufzurufen, den ich dann per E-Mail versende.

Ich habe schon mit QueryDef herumgebastelt und bekomme dann auch ein Recordset, das die relevanten Daten enthält. Aber wie weise ich dieses neu Recordset dann temporär dem Bericht zu, so dass die Daten wie gewünscht gefiltert werden?

Danke und Grüße

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
01. Dez 2009, 22:05
Rufname:
Wohnort: NRW


AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo René.

Hast du dir schon mal die Syntax der OpenReport-Methode und die möglichen Parameter in der Access-Hilfe angesehen?

Warum übergibst du das Kriterium nicht einfach als Filter beim Öffnen des Berichts?

_________________
Gruß MissPh!
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
02. Dez 2009, 10:47
Rufname:

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo und danke für die Antwort.

Ja, die Methode habe ich mir schon einmal angeschaut und ausprobiert. Zu dem Zeitpunkt bin ich daran noch gescheitert. Vom Aufbau ist es dann so zu verstehen, dass ich keine Parameter verwende und die Auswahlabfrage gleich so aufbaue, dass alle Daten geladen werden, die relevant sein könnten und ich filtere dann beim Aufruf, richtig?

Ich habe gestern noch etwas von "RecordSource" gelesen, das ich ausprobieren wollte, wenn ich nachher dazu komme. Ist es nicht möglich, das bereits ausgelesene RecordSet über die oben genannte Eigenschaft dem Bericht zuzuweisen? Vorher würde ich dann die eigentliche Datenherkunft speichern und nach dem Aufruf zurückschreiben. Oder übersehe ich hier etwas?

Danke und Grüße

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Dez 2009, 10:53
Rufname:
Wohnort: NRW

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Du kannst im Open-Ereignis des Berichts sowohl eine neue RecordSource als auch ein RecordSet zuweisen, das sind zwei verschiedene Sachen/Eigenschaften.

Als RecordSource kannst du eine Tabelle oder gespeicherte Abfrage oder auch einen SQL-String zuweisen.

_________________
Gruß MissPh!
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
02. Dez 2009, 10:57
Rufname:


AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo MissPh!

Das habe ich bisher noch nicht herausgefunden. Was meinst Du genau mit "Open-Ereignis"? Du sprichst in dem Fall nicht von OpenReport, oder? Da ist mir das ansonsten bisher nicht aufgefallen. Ansonsten muss ich da noch einmal in Klausur mit mir selbst gehen Wink

Muss der Bericht geöffnet sein, bevor ich das "neue" RecordSet zuweise oder auf dei RecordSource-Eigenschaft zugreife? Hast Du womöglich einen Link, wo es das als Beispiel schon einmal gibt, so dass ich das leichter nachvollziehen kann?

Vielen Dank schon einmal.

Grüße

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Dez 2009, 11:08
Rufname:
Wohnort: NRW

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Zitat:
Ansonsten muss ich da noch einmal in Klausur mit mir selbst gehen
Geh lieber in Klausur mit einem Access-Buch, die Online-Hilfe tut's aber auch. ;)

Beim Öffnen des Berichts mit der OpenReport-Methode tritt das OnOpen-Ereignis ein und dies kann man mit Hilfe der Ereignisprozedur Report_Open nutzen, um bspw. die Datenherkunft zu bestimmen bzw. zu ändern.

_________________
Gruß MissPh!
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
02. Dez 2009, 12:00
Rufname:

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo MissPh!

Danke für den Tipp. Ich habe es bisher folgendermaßen geschrieben und komme auch zu einem Ergebnis.
Code:
Private Sub Report_Open(Cancel As Integer)
    Dim query_def As DAO.QueryDef
    Dim strSQL As String

    Set query_def = CurrentDb.QueryDefs("qryTest")
    strSQL = Replace(query_def.SQL, "[EMailAddress]", """testemail@test.de""") '""" & Me!cboContactPerson.Column(2) & """")
    Debug.Print strSQL
    Me.RecordSource = strSQL
End Sub
Wie im Code zu sehen, ist das bisher wenig dynamisch. D.h. die E-Mail-Adresse habe ich momentan fest vorgegeben, da ich mir momentan nur eine Lösung einer globalen Variable vorstellen könnte. Ich rufe also vom Formular aus auf, speichere den Inhalt des Auswahlfeldes zwischen und rufe die globale Variable beim Berichtsaufruf wieder ab. Gibt es da nicht noch einen eleganteren Weg, vom aufrufenden Formular Variablen zu übergeben?

Dazu gesellt sich noch ein zweites Problem. In der Abfrage habe ich Ausdrücke, die ich in einem weiteren Feld wiederverwende. In einer Wenn-Abfrage stehen also zwei Ausdrücke in eckigen Klammern mit dem Vergleich [Ausdruck1] = [Ausdruck2]. Die beiden Ausdrücke sind eigentlich vorher definiert (à la Ausdruck1: Region1). Trotzdem kommen beim Aufruf immer die Abfragen, welche Werte ich dafür vergeben möchte. Aber das soll ja der Rechner selber innerhalb der Abfrage machen. Was ist hier falsch aufgesetzt?

So viele Fragen Wink Ich stöbere mal weiter in der Online-Hilfe, wie mir befohlen Very Happy

Viele Grüße

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Dez 2009, 12:49
Rufname:
Wohnort: NRW

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Wenn das Formular nicht geschlossen wird, nach dem Aufruf des Berichts, kannst du direkt darauf zugreifen.
Oder du übergibst die Email-Adresse als Parameter (OpenArgs) beim Öffnen des Berichts.
Beispiel:
Code:
Private Sub Report_Open(Cancel As Integer)
    Dim strSQL As String

    strSQL = Replace(CurrentDb.QueryDefs("qryTest").SQL, "[EMailAddress]", "'" & Me.OpenArgs & "'")
  ' oder
    strSQL = Replace(CurrentDb.QueryDefs("qryTest").SQL, "[EMailAddress]", "'" & _
                            Forms!frmname!cboContactPerson.Column(2) & "'")
    Debug.Print strSQL
    Me.RecordSource = strSQL
End Sub
(ungetestet!)

Was die Ausdrücke betrifft, so wirst du sie wiederholen müssen, kannst nicht die Aliasnamen verwenden.

_________________
Gruß MissPh!
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
02. Dez 2009, 13:15
Rufname:

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Hallo schon wieder,

das ist klasse. Hab vielen Dank. So langsam fügt sich das alles mehr und mehr zusammen.

Bzgl. der OpenArgs: momentan läuft es mit der geschilderten globalen Variable. Das ist insofern interessant, da ich für den gleichen Bericht die SendObject-Methode verwende. D.h. ich stelle jedes Mal vor dem Senden die globale Variable um, um danach den nächsten Bericht rauszuschicken (dass die Lösung gleich funktioniert hat, hat mich erst stutzig gemacht, aber das System scheint auf das Open-Report-Ereignis vorher zuzugreifen, wodurch tatsächlich immer die richtige E-Mail-Adresse drin steht).
Gibt es für das SendObject diese OpenArgs auch? Ich habe dazu in der Online-Hilfe nichts finden können.

Zum noch bestehenden Problem:
Ich rufe aus der gleichen Tabelle zwei Informationen ab (zwei Gesellschaften, die in unterschiedlichen Regionen sitzen können), die ich daraufhin auf Gleichheit prüfen muss. D.h. das Feld heißt jeweils "Region".... ich glaube, ich bin gerade darauf gekommen. Statt Aliase zu nehmen, habe ich jetzt einfach die Tabellennamen vorgesetzt. Was ich nicht bedacht hatte, ist ja, dass selbst gleiche Tabellen ein Kürzel "_1" erhalten. Wie war das mit dem Wald und den Bäumen? Wink

Hab vielen Dank für die Unterstützung.

Grüße

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Dez 2009, 13:51
Rufname:
Wohnort: NRW

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Die Syntax der SendObject-Methode ist die folgende, wie sich aus der Access-Hilfe leicht erfahren lässt:
Zitat:
DoCmd.SendObject [Objekttyp][, Objektname][, Ausgabeformat][, An][, cc][, Bcc][, Betreff][, Nachricht][, Nachricht bearbeiten][, Vorlagedatei]
naturgemäß gibt es hier keine "OpenArgs" sondern "SendArgs", also alle Parameter, die man zum Versenden brauchen könnte. ;)
_________________
Gruß MissPh!
RRaillon
Excel-Kenner (inkl. VBA), Access-Neuling


Verfasst am:
02. Dez 2009, 16:34
Rufname:

AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Ok Wink

Das heißt, wenn hier kein Argument dabei ist, um einen Filter zu übergeben, müsste ich es weiter über die globale Variable lösen. Ist ja an sich nur unschön, da es so funktioniert wie es soll.

Aber danke für Deine Mühen.

René
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Dez 2009, 18:12
Rufname:
Wohnort: NRW


AW: Parameterabfrage für Bericht - AW: Parameterabfrage für Bericht

Nach oben
       Version: Office 2003

Ich verstehe jetzt das Problem nicht ganz, greift die Report_Open-Routine nicht bei SendObject?

...oh, sorry, du sprachst von der Lösung mit OpenArgs - nein, das geht dann wohl nicht.

_________________
Gruß MissPh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage - Parameter bei Formularöffnung abgefragt?! 2 Stefan1982 1481 27. Sep 2006, 11:55
Stefan1982 Parameterabfrage - Parameter bei Formularöffnung abgefragt?!
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich in einer Parameterabfrage einen Wert vorgeben? 4 Kl@vier 1517 30. Aug 2006, 12:17
Kl@vier Wie kann ich in einer Parameterabfrage einen Wert vorgeben?
Keine neuen Beiträge Access Tabellen & Abfragen: Problem: Parameter-Abfrage aus einem Unterformular ausführen 3 bettina_vt 3427 12. Mai 2006, 15:44
bettina_vt Problem: Parameter-Abfrage aus einem Unterformular ausführen
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage aus mehreren Feldern 1 plapylus 809 25. Apr 2006, 19:56
jens05 Parameterabfrage aus mehreren Feldern
Keine neuen Beiträge Access Tabellen & Abfragen: Formularfeldinhalt an Parameterabfrage übergeben 2 Schnecke199 1380 05. Apr 2006, 11:00
Schnecke199 Formularfeldinhalt an Parameterabfrage übergeben
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, Bericht erstellen 1 bama 1324 15. März 2006, 16:08
LaSweeta Abfrage, Bericht erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Problem mit Parameterabfrage 10 Frankie 699 15. März 2006, 13:20
Frankie Problem mit Parameterabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage 2 friend 581 09. Jan 2006, 21:04
friend Parameterabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage 2 Edgar Wolli 575 01. Aug 2005, 12:30
Edgar Wolli Parameterabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Problem beim Bericht oeffnen, wenn Parameter von Formular 11 Gast1 993 21. Jul 2005, 15:28
Nindigo Problem beim Bericht oeffnen, wenn Parameter von Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Parameterabfrage 3 dops 685 17. Jul 2005, 13:25
mapet Parameterabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: im Bericht werden "falsche" Daten angezeigt 19 Sonic 1596 07. Jun 2005, 08:14
Sonic im Bericht werden "falsche" Daten angezeigt
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps