Ausführen von Abfrage aus Access über Excel Abfrage in VBA
Zugang gerettet hat, eine Abfrage, die wurde mit dem Abfrage-generator namens "myQuery'. Die Datenbank ist an das system angeschlossen via ODBC-Verbindung. Makros sind alle aktiviert.
Excel Hat, macht eine ADODB-Verbindung eine Verbindung zu der Datenbank über
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
With con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "MyDatabase.accdb"
End With
In der Regel würden Sie gehen Sie vor und schreiben Sie einfach Ihren SQL, das ist vollkommen in Ordnung und dann eben so etwas wie
Dim sqlQuery As String
sqlQuery = "SELECT * FROM myTable"
Set rs = New ADODB.Recordset
rs.Open sqlQuery, con, ...
Aber ich möchte den Zugriff auf die Abfrage, die ich gespeichert in der access-Datenbank. Also wie rufe ich die gespeicherten Abfragen in der Datenbank, die ich gerade angeschlossen.
Bereits versucht
- con.Execute("EXEC " myQuery") aber, dass man sagte mir, es könne nicht sein, finden myQuery.
- rs.Öffnen Sie "myQuery", con aber der ist ungültig und will AUSWÄHLEN/etc Aussagen von ihm
InformationsquelleAutor toxicate20 | 2013-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie können Sie behandeln wie eine gespeicherte Prozedur.
Wenn wir beginnen direkt vor
Dim sqlQuery As String
Dann pickup-recordset arbeiten nach diesem.
InformationsquelleAutor Bmo
Waren Sie fast da:
Lassen Sie einfach Exec.
Können Sie Parameter hinzufügen, auch dies ist ein wenig alt, aber sollte helfen: update 2 Felder in der Access-Datenbank mit Excel-Daten und vielleicht auch ein Makro
Sie können eine SELECT-Anweisung ausführen, müssen Sie ein recordset. Siehe @Brno Antwort. Sie können die Aktion ausführen Abfragen (Update, Delete etc)
Toxicate20, wenn Sie weiterhin Probleme haben, poste den sql der Abfrage, die Sie verwenden möchten.
InformationsquelleAutor Fionnuala
War ich in der Lage, eine update-Abfrage, die bereits gespeichert ist in Access verwenden:
Dieser gab mir Fehler, bis ich ersetzt Leerzeichen in der Abfrage Namen mit Unterstrichen, sowohl in der Access-Datenbank und die Anweisung ausführen.
InformationsquelleAutor Steve
Dies ist eine Art von hack job, aber Sie können query eine Abfrage. Ersetzen Sie Ihre sql-string mit der folgenden:
Bevor Sie diese, muss man sicherstellen, dass der Access-Datenbank gespeichert wurde, dh. drücken Sie Strg+S (es ist nicht ausreichend, dass die Abfrage ausgeführt wurde, in Access).
InformationsquelleAutor Sixter
Lange Zeit, seit dieser thread erstellt wurde. Wenn ich es richtig verstehe, ich habe vielleicht etwas nützliches hinzufügen. Ich habe einen Namen gegeben, was der OP beschreibt, dass der Prozess der Verwendung von SQL gespeicherte Abfrage in einer ACCDB laufen in VBA über DAO oder ADOBD. Den Namen habe ich gegeben, es ist "Objekt-Eigenschaft-Provider", auch mit der Abkürzung OPP in meine Notizen, und für die Objekt-name Präfix/suffix.
Die Idee ist, ein bestehendes Objekt in eine ACCDB (in der Regel eine Abfrage) stellt eine Eigenschaft (in der Regel SQL), die Sie benötigen, um die Verwendung in VBA. Ich schlug zusammen, eine Funktion nur zu saugen SQL aus Abfragen; siehe unten. Vorwarnung: sorry, aber das ist alles in DAO, ich habe nicht viel Verwendung für ADODB. Hoffe, Sie werden noch immer finden, die nützliche Ideen.
Ich ging sogar so weit zu entwickeln, eine Methode zu verwenden/einfügen ersetzbare Parameter in der SQL kommt von diesen OPP Abfragen. Dann verwende ich VBA.Ersetzen (), um die zu ersetzen, bevor ich den SQL in VBA.
DAO-Objekt-Pfad auf die SQL einer Abfrage in einer ACCDB ist wie folgt:
Die Art, wie ich ersetzbare Parameter ist durch die Auswertung, was ersetzt werden muss, und wählen einen ungewöhnlichen Namen für die Parameter, die unmöglich existieren in der realen Datenbank. Für die meisten Teil, nur die Ersetzungen, die ich gemacht habe sind die Feld-oder Tabellennamen, oder die Ausdrücke der WHERE-und HAVING-Klauseln. So nenne ich diese Dinge wie "{ReplaceMe00000001}" und dann verwenden Sie die Replace () - Funktion, um die Arbeit zu tun...
...und verwenden Sie dann die sqlText in VBA. Hier ist ein Beispiel:
InformationsquelleAutor spinjector