2017-11-09 1 views
1

ich eine Access-Datenbank bin mit Berichten über eine relativ große Datenmenge zu erzeugen. Da ich nicht ewig warten möchte und auch ACCESS bestimmte Größenbeschränkungen hat, führe ich eine komplexe SQL-Abfrage auf meinem Server aus.einen Datensatz verwenden, um neue Tabellen in ACCESS zu erzeugen

Nun würde Ich mag das Ergebnis dieser komplexen SQL-Abfrage innerhalb ACCESS verwenden, um einige letzten Dinge zu tun und dann in einem Formular anzuzeigen.

Ich weiß, wie der Zugriff auf Datenbanktabellen direkt zu verbinden, ich weiß auch, wie man von dort zu arbeiten. Aber hier habe ich eine Lücke: Ich habe ein SQL mit einigen wenigen tausend Zeilen und erhalte das Ergebnis als Recordset. Wie kann ACCESS das in seiner eigenen Architektur akzeptieren?

Dim SQL As String 
Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 

'SQL query 
SQL = " SELECT something quite complex and long" 

Set conn = New ADODB.Connection 
conn.ConnectionString = "my great server" 
conn.Open 

Set rs = New ADODB.Recordset 
rs.Open SQL, conn 
'--- here is my personal gap --- 
conn.Close 
+0

Was meinen Sie? Was genau willst du machen? –

+0

Ich führe einen komplexen Befehl auf dem SQL Server aus. Dieser Befehl ist zu groß für ACCESS. Das Resultset ist nicht zu groß für ACCESS. Ich möchte diese Ergebnismenge für Anzeige- und Berichtszwecke in ACCESS wiederverwenden. – Anderas

+0

Was meinst du mit _Dieser Befehl ist zu groß für ACCESS_? Was meinst du mit _reuse this resultset_? Sei genau. Ich kann Ihnen zeigen, wie Sie ein Recordset an ein Formular oder einen Bericht binden, wenn das Ihre Frage ist, aber es scheint nicht –

Antwort

0
  1. eine passthru Abfrage (oder einen normalen) mit Ihrer komplexen Anforderung erstellen und
  2. erstellen Tabelle erstellen Access-Abfrage, die im Grunde enthält
    select * from myComplexPTQ into myLocalTable

Wenn Sie fertig speichern normale Abfrage verwenden, anstatt passthru, und Sie es langsam finden, empfehle ich Ihnen einen Blick aufgeben 210

+0

Die Abfragefähigkeit war das, wonach ich suchte. Vielen Dank, es funktioniert sehr gut. – Anderas

+0

Thw. Dann markieren Sie diese Antwort als Antwort. –

+0

Wie? Ich bin ziemlich neu in Stackoverflow – Anderas

0

Wenn Ihr „sehr komplex“ SQL-Code eine gespeicherte Prozedur ist - können Sie das ausführen und zurückgehen daraus einen Pass Through-Abfrage verwenden. Sehen Sie hier Two ways to execute a Stored procedure in VBA, Which one is better?

Wenn es sich um eine Ansicht ist, können Sie einfach auf die Ansicht verknüpfen, wie ein Tisch.

+0

Danke, ich werde einen Blick in Pass-Through-Abfragen werfen. Wir haben beide, geplante gespeicherte Prozeduren (auf deren Ergebnis ich leicht wie eine Ansicht oder eine Tabelle zugreifen kann); aber auch SQL-Befehle mit mehr als 5000 Zeilen, die noch keine gespeicherten Prozeduren sind und wahrscheinlich nie sein werden. Es ist diese zweite Art von Anfragen, über die ich spreche. Sie liefen in Access, wie, 30 Minuten. In SQL laufen sie nach der Optimierung in ungefähr 2 Minuten, was für den Kunden in Ordnung ist. – Anderas

+0

5000 Zeilen SQL ist eine Anwendung ... Hatten Sie erwogen, diese als SP zu speichern? Oder abhängig von den Daten, die sie verwenden, um temporäre Ergebnistabellen zu erstellen, mit denen Sie verlinken können, wenn es sich nicht um "Live" -Daten handelt? – Minty

Verwandte Themen