Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

bzgl.SQL:ADO anstatt DAO verweden?!?

bzgl.SQL:ADO anstatt DAO verweden?!?
07.03.2004 18:20:27
arash
Hi,
eine SQL Abfrage die ich in VBA mit DAO erstellt habe läuft sehr langsam,da die Quelldatenbank(Access) sehr groß ist und ich dachte mir daß ich evtl. mit ADO besser beraten wäre als mit DAO wie bisher. Oder hat jemand eine bessere Idee?!?
was müßte ich machen um folgende Abfrage mit ADO anstatt mit DAO durchzuführen?

Sub EK_Daten_2003()
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("C:\Test.mdb") 'Datenquelle
Sql = "SELECT [Datum],SUM([EK])" & _
"FROM tra WHERE [Datum] LIKE '*2003*'" & _
"GROUP BY [Datum] ORDER BY [Datum]"
Set rs = db.OpenRecordset(Sql)
Sheets("Actuals").Range("AN2").CopyFromRecordset rs  'Datenziel
End Sub

DANKE im Voraus

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bzgl.SQL:ADO anstatt DAO verweden?!?
07.03.2004 18:46:01
Dieter Klemke
Hallo arash,
nach meiner Erfahrung ist ADO nicht unbedingt schneller als DAO. Es kann in einzelnen Fällen sogar langsamer sein. Allerdings ist ADO die zukünftige Schiene von Microsoft.
Dein Code könnte in ADO folgendermaßen aussehen:

Sub EK_Daten_2003()
Dim con As ADODB.Connection
Dim datei As String
Dim rs As ADODB.Recordset
Dim sql As String
' (1) Verbindung zur Datenbank herstellen
datei = "C:\Test.mdb"
Set con = New ADODB.Connection
con.Open ConnectionString:= _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & datei
' (2) Recordset erstellen
sql = "SELECT [Datum],SUM([EK])" & _
"FROM tra WHERE [Datum] LIKE '*2003*'" & _
"GROUP BY [Datum] ORDER BY [Datum]"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open Source:=sql, _
ActiveConnection:=con, _
CursorType:=adOpenStatic, _
LockType:=adLockReadOnly, _
Options:=adCmdText
' (3) Recordset auflisten
Sheets("Actuals").Range("AN2").CopyFromRecordset rs
' (4) Recordset und Verbindung schließen
rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
End Sub

Wenn du optimieren willst, würde ich versuchen an dem SQL-Statement anzusetzen. Musst du z.B. den Like-Operator verwenden?
(Du brauchst natürlich einen Verweis auf die ADOs.)
MfG
Dieter
Anzeige
AW: Danke! ADO hat tatächlich nicht geholfen
08.03.2004 16:46:36
arash
Hi Dieter,
danke dir! Hat geklappt mit dem ADO Code, aber es ist auf die Sekunde genau so langsam!
Ich habe nun überhaupt keine Ahnung mehr wie ich es optimieren kann, so daß die Abfrage nicht 38 sekunden braucht zur Aktualisierung. Liegt es möglicherweise daran,daß die Queldatenbank zu groß ist?
Danke,
AW: Danke! ADO hat tatächlich nicht geholfen
08.03.2004 20:36:56
Dieter Klemke
Hallo arash,
bei Optimierungsfragen zu deiner Access-Datenbank und der SQL-Abfrage bist du wahrscheinlich in einem Access-Forum besser aufgehoben.
Hier mal eine Adresse:
http://spotlight.de/nzforen/msa/t/forum_msa_1.html
MfG
Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige