Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Parameterübergabe beim Öffnen eines Reports

814 views
Skip to first unread message

Heike Erdmann

unread,
Feb 20, 2004, 6:47:54 AM2/20/04
to
Hallo NG,

Acc97/2000:
Ich möchte einen Bericht aus einem Formular heraus öffnen.
Die zugrundeliegende Abfrage des Berichts hat Parameter,
die ich gerne mit den Werten aus dem Formular füllen
möchte.

Kann diesen Parameter nicht weglassen und den Filter/Where
verwenden, da eine Unterabfrage auf diesen Parameter
zurückgreift.

Wie kann ich den Inhalt der Formular-Felder an die Abfrage-
Parameter übergeben?

Bin für jeden Hinweis dankbar

gruß

Heike


Karl Donaubauer

unread,
Feb 20, 2004, 6:57:11 AM2/20/04
to
Heike Erdmann schrieb:

> Acc97/2000:
> Ich möchte einen Bericht aus einem Formular heraus öffnen.
> Die zugrundeliegende Abfrage des Berichts hat Parameter,
> die ich gerne mit den Werten aus dem Formular füllen
> möchte.
>
> Kann diesen Parameter nicht weglassen und den Filter/Where
> verwenden, da eine Unterabfrage auf diesen Parameter
> zurückgreift.
>
> Wie kann ich den Inhalt der Formular-Felder an die Abfrage-
> Parameter übergeben?

Indem du in der Abfrage statt der Parameterbezeichnungen
Formularbezüge verwendest, also:
Forms!MeinFormular!MeinSteuerelement

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Datenbankprofis: http://www.dbdev.org


Heike Erdmann

unread,
Feb 20, 2004, 7:30:51 AM2/20/04
to
Danke für die Hilfe Karl.

Die Abfragen sind mit anderen Tabellen/Abfragen über
diesen Parameter verknüpft. Wenn ich direkten
Formularbezug benutze, kann ich die Abfragen nicht
universell einsetzen.

Deshalb dachte ich, es gibt vielleicht doch eine
Möglichkeit Werte an einen Parameter zu übergeben.
Vielleicht auch über DAO oder so.

Danke

Heike

>-----Originalnachricht-----

>.
>

www.friends-schwerin.de

unread,
Feb 20, 2004, 9:38:12 AM2/20/04
to
Hallo Heike,

eine Tabelle mit ID und Memofeld (für den SQL Code),
übergib deinem Report doch die Datenherkunft, die du in einer Tabelle
hinterlegt hast.
Du lässt den Bericht im Formular per Button öffnen und übermittelst dem
Bericht die ID des SQL Strings in der Tabelle.
Im Bericht legst du "beim öffnen" den Me.RecordSource = (Feld in der
Tabelle) an. Damit kannst du den gleichen Bericht unterschiedlich Filtern
und sortieren und auch von anderen Formularen aufrufen. Du musst halt nur
den SQL Code für die Berichtabfrage in der Tabelle speichern.

Klappt bei mir hervorragend.

Gruß Basti


"Heike Erdmann" <anon...@discussions.microsoft.com> schrieb im Newsbeitrag
news:1318501c3f7ad$605657a0$a301...@phx.gbl...

Karl Donaubauer

unread,
Feb 20, 2004, 11:41:44 AM2/20/04
to
Heike Erdmann schrieb:
>Karl Donaubauer schrieb:

>>> Acc97/2000:
>>> Ich möchte einen Bericht aus einem Formular heraus öffnen.
>>> Die zugrundeliegende Abfrage des Berichts hat Parameter,
>>> die ich gerne mit den Werten aus dem Formular füllen möchte.
>>>
>>> Kann diesen Parameter nicht weglassen und den Filter/Where
>>> verwenden, da eine Unterabfrage auf diesen Parameter
>>> zurückgreift.
>>>
>>> Wie kann ich den Inhalt der Formular-Felder an die Abfrage-
>>> Parameter übergeben?
>>
>> Indem du in der Abfrage statt der Parameterbezeichnungen
>> Formularbezüge verwendest, also:
>> Forms!MeinFormular!MeinSteuerelement
>...

> Die Abfragen sind mit anderen Tabellen/Abfragen über
> diesen Parameter verknüpft.

Bahnhof

> ...Wenn ich direkten


> Formularbezug benutze, kann ich die Abfragen nicht
> universell einsetzen.

Falls damit gemeint ist, dass der Parameter auf unterschiedliche
Art gefüllt wird, dann hilft dir vielleicht sowas wie
Access-FAQ 3.15 Variablen in Abfragen verwenden
Einer Funktion kannst du beim Aufruf je nach Kontext einen anderen
Wert als Argument übergeben und dann an die Abfrage liefern.
Also z.B.

Public Function fctSendVar(strFoo As String) As String

fctSendVar = strFoo

End Function

> ...


> Deshalb dachte ich, es gibt vielleicht doch eine
> Möglichkeit Werte an einen Parameter zu übergeben.
> Vielleicht auch über DAO oder so.

Grundsätzlich kannst du Parameter schon per Code übergeben.
s. Access-FAQ 6.16 Parameterabfrage per VBA öffnen
Wird dir nur für einen Bericht nix helfen, weil du die Abfrage
unmittelbar nach Parameterübergabe weiterverwenden musst.

Thomas Möller

unread,
Feb 20, 2004, 3:32:22 PM2/20/04
to
Hallo Karl,

Karl Donaubauer <NoS...@donkarl.com> schrieb:


> Grundsätzlich kannst du Parameter schon per Code übergeben.
> s. Access-FAQ 6.16 Parameterabfrage per VBA öffnen
> Wird dir nur für einen Bericht nix helfen, weil du die Abfrage
> unmittelbar nach Parameterübergabe weiterverwenden musst.

man kann aber doch einem Bericht ein Recordset als Datenquelle zuweisen,
ungefähr so:

1. Schritt: Du deklarierst in einem Modul eine globale Variable vom Typ
Recordset
Public rstRpt as DAO.Recordset

2. Schritt: Du erzeugst Dein Recordset und öffnest Den Bericht
Set rstRpt = CurrentDb.OpenRecordset("SELECT * FROM tbl_DeineTabelle;")
DoCmd.OpenReport "rpt_DeinBericht", acViewPreview
rstRpt.Close
Set rstRpt = Nothing

3. Schritt: Im Open-Ereignis des Berichts weisst Du dem Bericht als
Datenquelle das Recordset zu
Me.RecordSource = rstRpt.Name


CU
--
Tho...@Team-Moeller.de

Homepage: www.team-moeller.de

TM-AbhängigeObjekte: Update auf Version 2.40 (seit 18.01.04)
Addin: Abhängigkeiten zwischen den Datenbankobjekten ermitteln


Karl Donaubauer

unread,
Feb 20, 2004, 5:45:48 PM2/20/04
to
Thomas Möller schrieb:
> Karl Donaubauer schrieb:

>> Grundsätzlich kannst du Parameter schon per Code übergeben.
>> s. Access-FAQ 6.16 Parameterabfrage per VBA öffnen
>> Wird dir nur für einen Bericht nix helfen, weil du die Abfrage
>> unmittelbar nach Parameterübergabe weiterverwenden musst.
>
> man kann aber doch einem Bericht ein Recordset als Datenquelle
> zuweisen, ungefähr so:
>
> 1. Schritt: Du deklarierst in einem Modul eine globale Variable vom
> Typ Recordset
> Public rstRpt as DAO.Recordset
>
> 2. Schritt: Du erzeugst Dein Recordset und öffnest Den Bericht
> Set rstRpt = CurrentDb.OpenRecordset("SELECT * FROM
> tbl_DeineTabelle;")
> DoCmd.OpenReport "rpt_DeinBericht", acViewPreview
> rstRpt.Close
> Set rstRpt = Nothing
>
> 3. Schritt: Im Open-Ereignis des Berichts weisst Du dem Bericht als
> Datenquelle das Recordset zu
> Me.RecordSource = rstRpt.Name

Joo. Der Bericht wird aber wieder extra nach dem Parameter
schreien und fensterln. Auch wenn das Recordset auf einem
Querydef samt Übergabe an die Parameters-Auflistung basiert.

--
cu

Heike Erdmann

unread,
Feb 21, 2004, 8:16:44 AM2/21/04
to

>> Die Abfragen sind mit anderen Tabellen/Abfragen über
>> diesen Parameter verknüpft.
>
>Bahnhof
>
>> ...Wenn ich direkten
>> Formularbezug benutze, kann ich die Abfragen nicht
>> universell einsetzen.
>
>Falls damit gemeint ist, dass der Parameter auf
unterschiedliche
>Art gefüllt wird, dann hilft dir vielleicht sowas wie
>Access-FAQ 3.15 Variablen in Abfragen verwenden
>Einer Funktion kannst du beim Aufruf je nach Kontext
einen anderen
>Wert als Argument übergeben und dann an die Abfrage
liefern.
>Also z.B.
>
>Public Function fctSendVar(strFoo As String) As String
>
> fctSendVar = strFoo
>
>End Function
>
>> ...

Super!!!!

Danke Karl - Ist eine hervorragende Lösung für mein
Problem!


Heike

anon...@discussions.microsoft.com

unread,
Feb 21, 2004, 8:30:55 AM2/21/04
to

>-----Originalnachricht-----

>Hallo Heike,
>
>eine Tabelle mit ID und Memofeld (für den SQL Code),
>übergib deinem Report doch die Datenherkunft, die du in
einer Tabelle
>hinterlegt hast.
>Du lässt den Bericht im Formular per Button öffnen und
übermittelst dem
>Bericht die ID des SQL Strings in der Tabelle.
>Im Bericht legst du "beim öffnen" den Me.RecordSource =
(Feld in der
>Tabelle) an. Damit kannst du den gleichen Bericht
unterschiedlich Filtern
>und sortieren und auch von anderen Formularen aufrufen.
Du musst halt nur
>den SQL Code für die Berichtabfrage in der Tabelle
speichern.
>
>Klappt bei mir hervorragend.
>
>Gruß Basti
>
>

Danke Basti,

Diese Vorgehensweise ist generell super, bedarf nur einem
höheren Doku-Aufwand da die visuelle Darstellung der
Abfragen bei der Programmierung nicht im 1. Schritt
möglich ist.

Sowas ähnliches setze ich schon für Auswahllisten
verschiedener Berichte ein, wobei ich hier die
Listenfelder für Kriterien mit unterschiedlichen Daten
fülle.

Die Antwort von Karl war für mein Problem eine super
Lösung.

Danke Dir für Deine Hilfe.

Heike

0 new messages