Übergeben Sie den Parameter von Excel an die Access-Abfrage

7658
CaptainProton

Ich habe eine Access-Datenbank (2010, aber auch Office 2003), mit einer Vielzahl von Tabellen, Formularen und verschachtelten Abfragen, die sich auf Daten beziehen, die in einem Formular eingegeben wurden, z WHERE query1.year=[Forms]![Form1]![Text0];. Ich möchte jetzt eine solche Abfrage als externe Datenquelle mit Excel verknüpfen, was jedoch zu Problemen führt:

Wenn ich den Standardansatz "Daten -> Von Zugriff" verwende, werden die Abfragen, die Formulare verwenden, nicht einmal angezeigt. Wenn ich einen Link zu einer anderen Abfrage erstelle und anschließend den Befehlstext im Verbindungseigenschaftsfenster so verändere, dass er auf die tatsächlich gewünschte Abfrage zeigt, wird eine Fehlermeldung angezeigt ("Die Abfrage wurde nicht ausgeführt oder die Datenbanktabelle konnte nicht geöffnet werden. ").

Wenn ich MS Query ("Daten -> Aus anderen Quellen -> Microsoft Query") verwende, kann ich die gewünschte Abfrage auswählen, aber die Fehlermeldung "Zu wenige Parameter. Erwartet 1."

Dies ist natürlich absolut sinnvoll, da die Abfrage auf einem Formular basiert, das in Excel nicht verfügbar ist. Ich habe versucht, "echte" Abfrageparameter in diesen Abfragen zu verwenden, aber es ist dasselbe. Ich möchte wirklich, dass Excel den Wert in einer bestimmten Zelle übernimmt und als Parameter an die Access-Abfrage übergibt.

Die ideale Welt würde also so aussehen: In Access habe ich eine Reihe von Abfragen, die für ihre Arbeit auf Parameter angewiesen sind. In Access kann ich ein Formular verwenden, um den Benutzer diese Werte eingeben zu lassen. Von Excel sollten diese Parameter aus gegebenen Zellen übernommen werden. Ist das überhaupt möglich?

4

2 Antworten auf die Frage

2
Doug Glancy

Kapitän,

Ich bin zu 90% sicher, dies mit einem DAO.querydef und seiner "parameters" -Eigenschaft zu tun. Sie können Ihre Abfragen auch ohne Parameter umschreiben und dann den Abfrage-Manager in Excel verwenden. Hilfe zu beiden Ideen erhalten Sie unter http://www.dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/ .

1
David W. Fenton

Ich beziehe mich nie auf ein Formularsteuerelement in einer gespeicherten Abfrage, es sei denn, es ist absolut notwendig, aus dem Grund, dem Sie begegnet sind. Dadurch werden die Abfragen aufgrund der äußeren Abhängigkeit vom geöffneten Formular weniger brauchbar.

Access bietet mehrere Möglichkeiten, Kriterien zur Laufzeit auf Recordsets anzuwenden. Es ist also fast nie nötig, eine Abhängigkeit von einem Formularsteuerelement festzulegen.

Wenn Sie jedoch mit DDE eine Verbindung zu Ihrer Datenbank herstellen können, sollte diese Aufgabe ausgeführt werden können. DDE war früher der Standard für das Zusammenführen von Word aus Access-Datenbanken (zu meinem ewigen Ärger). Es startet eine neue Instanz von Access (das heißt, wenn Sie über Sicherheit auf Benutzerebene verfügen, wird es mit einer Eingabeaufforderung für Benutzername / Kennwort sitzen und warten, ohne Ihre Datenbank zu öffnen), und kommuniziert mit dieser über alte DDE-Befehle . In Ihrem Fall sollte es funktionieren, wenn Sie die erforderlichen Formulare in den Startprogrammen Ihrer Datenbank öffnen. Wenn jedoch Daten zur Laufzeit vom Benutzer ausgefüllt werden müssen, funktioniert dies ebenfalls nicht.

Die ultimative Lösung besteht darin, Ihre gespeicherten Abfragen von den Formularen zu entkoppeln oder die unformatierte SQL-Zeichenfolge in Excel zum Abrufen der Daten zu verwenden (ohne die Formularreferenz).