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
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
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-----
>.
>
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...
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.
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
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
Super!!!!
Danke Karl - Ist eine hervorragende Lösung für mein
Problem!
Heike
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