VBA: Abfragen von Access mit Excel. Warum so langsam?

Fand ich diesen code online Abfragen-Zugang und Eingabe der Daten in excel (2003), aber es ist viel langsamer als es sein sollte:

Sub DataPull(SQLQuery, CellPaste)
Dim Con As New ADODB.Connection
Dim RST As New ADODB.Recordset
Dim DBlocation As String, DBName As String
Dim ContractingQuery As String

If SQLQuery = "" Then

Else
    DBName = Range("DBName")
    If Right(DBName, 4) <> ".mdb" Then DBName = DBName + ".mdb"

    DBlocation = ActiveWorkbook.Path
    If Right(DBlocation, 1) <> "\" Then DBlocation = DBlocation + "\"

    Con.ConnectionString = DBlocation + DBName
    Con.Provider = "Microsoft.Jet.OLEDB.4.0"
    Con.Open

    Set RST = Con.Execute(SQLQuery)
    Range(CellPaste).CopyFromRecordset RST

    Con.Close
End If

End Sub

Das problem ist, dass dieser code dauert sehr lange. Wenn ich den Zugriff und führen Sie die Abfrage, dort dauert es etwa 1/10tel der Zeit. Gibt es trotzdem, um diese Fahrt? Oder aus irgendeinem anderen Grund könnte dies so lange? Alle meine Fragen sind einfache select-Abfragen mit einfachen where-statements und keine Verknüpfungen. Auch ein "select * from [test]" Abfrage dauert viel länger als es sollte.

EDIT: ich sollte angeben, dass die Zeile "Range(CellPaste).CopyFromRecordset RST" war das eine lange Zeit.

Beim laufen im Schritt durch den Modus, die Zeile code, die länger dauert?
Range(CellPaste).CopyFromRecordset RST
Wie viele Datensätze Sie abrufen?
Hmm. Das ändert alles. Ich glaube nicht, du wirst schneller als CopyFromRecorset. Auch, sollten Sie ernsthaft überlegen, diesen thread umbenennen und löschen alle irrelevanten Sachen in deinem post. Zugang hat eindeutig nichts mit dem problem zu tun, IMHO.

InformationsquelleAutor Dan | 2009-10-15

Schreibe einen Kommentar