Wie gebe ich einen parameter in einer access-Bericht programmgesteuert?
Ich habe eine bestehende Access-MDB. Ich bin das hinzufügen einer Befehlsschaltfläche zu einem vorhandenen Formular, das läuft einem vorhandenen Bericht. Die änderung gemacht ist, dass dieser button muss einen parameter übergeben, mit der ID des Datensatzes, über das berichtet wird - derzeit wird der Bericht ausgeführt, die auf jeden Datensatz in der MDB.
Habe ich verändert, die Abfrage, die der Bericht ausgeführt wird, über einen parameter für die ID-Wert, so dass nun, wenn der button geklickt wird Access fordert für die Datensatz-ID zu melden, und der Bericht zeigt, wie es sein sollte.
Jedoch, ich kann nicht für das Leben von mir herauszufinden, wie ein parameter übergeben werden, die in den Bericht für die Abfrage zu verwenden. Wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem DoCmd.OpenReport-Methode hat verschiedene Argumente, von denen eine Where-Anweisung:
Ist
Meine Allgemeine Herangehensweise an diese Art von problem ist das speichern der Kriterien in der Datenbank, in der Regel eine Controller-Tabelle hat eine Zeile. Dann stellen Sie Ihre Kriterien legen Sie eine Abfrage in paranthesis, die einen Wert zurückgibt, der die Kriterien, die Sie wollen. In Ihrem Fall, es wäre so etwas wie:
Der Vorteil dieser techinque ist, dass die control-Tabelle merkt sich die Einstellungen für das nächste mal, wenn Sie den Bericht ausführen. Natürlich ReportID würde gebunden werden, um ein Feld in einem Formular. Ich mag auch die Tatsache, dass Ihre Abfragen sind isoliert von Formen; Sie kann ausgeführt werden, unabhängig von Formen.
Die Where-Klausel der docmd.openreport-ist ein string, der verwendet das gleiche format, wie die where-Klausel in einer SQL-Anweisung.
Den Grund zu setzen, parametrieren Sie die Abfrage auf docmd statt der Datenherkunft des Berichts ist die Flexibilität. Sie haben möglicherweise eine Notwendigkeit, um den Bericht zu öffnen, ohne paremeter/alle Datensätze zurückgeben, oder haben die Möglichkeit, filter auf unterschiedliche Felder.
Ich weiß, dies ist eine alte post, aber das hat mich schon ein bisschen. Fehler "Ungültige Verwendung von parren" aber das Problem war das Leerzeichen im Feld name. Ich war das erstellen eines Berichts aus einer db, jemand hat den Fehler, das Leerzeichen.
Übergeben Sie einen Parameter zu einer Abfrage über die where-Klausel, wenn das Datenbank-Feld ein Leerzeichen enthält, verwenden Sie dieses Beispiel:
Wenn Sie über diese denken Sie können sehen, dass das produzieren
where [Regional Office]='string value'
gerade wie Sie erwarten würden, in access sql.Warum jeder will das so kompliziert ist, weiß ich nicht.
speichern Sie den Bericht, die Datenherkunft ohne Parameter.
vorgeschlagen von Remou, geben Sie das Kriterium in das entsprechende argument von DoCmd.OpenReport.
Zu tun versuchen, es auf andere Weise, ist eine Frage der Widerstand gegen die natürlichen Methoden für Aufgaben in Access.