Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Access-Daten einlesen beschleunigen

Betrifft: Access-Daten einlesen beschleunigen von: Sabine M.
Geschrieben am: 23.08.2004 18:28:31

Hallo liebe Forums-Besucher,

aus dem Board habe ich mir aus diesem Thread den dort veröffentlichten VBA-Code "geholt" und in meiner Arbeitsmappe eingesetzt: https://www.herber.de/forum/index.htm?https://www.herber.de/forum/archiv/468to472/t469600.htm .

Das funktioniert auch. :-)

Ich frage eine Access-Datei über ein 10MB-Netzwerk ab, die 8 MB groß ist und zugleich von mehreren KollegInnen genutzt wird.

Die Abfrage dauert aber ziemlich lange, d.h. ich kann schon mal 4-7 Sekunden auf das Abfrageergebnis warten, unabhängig wieviel DS gesucht werden und ob komplexe oder einfache SQL-Anweisungen verwendet werden. Habe mir die Laufzeit mal ausgeben lasse: das Einlesen in die Tabelle ist ziemlich schnell, das Recordset hingegen lahmt.

Kann man das vielleicht irgendwie beschleunigen? Vielleicht über Trick 17? Darf auch ruhig Quick And Dirty sein.

Herzliche Grüße

Eure Sabine


PS: Komprimieren kann ich die Datenbank vor dem Zugriff nicht, weil sie stets im Einsatz ist.

  


Betrifft: AW: Access-Daten einlesen beschleunigen von: EtoPHG
Geschrieben am: 23.08.2004 20:59:06

Hallo Sabine,

Die Zugriffszeit selber kann nicht so einfach beieinflusst werden.
Ich hab allerdings die Erfahrung gemach, dass vor dem Absetzen des Queries
folgendes hilft:

Application.Calculation = xlCalculationManual

Dann das Query
Anschliessend

Application.Calculate
Application.Calculation = xlCalculationAutomatic

Gruss Hansueli


  


Betrifft: AW: Access-Daten einlesen beschleunigen von: Sabine M.
Geschrieben am: 24.08.2004 00:57:48

Hallo Hansueli,

danke für den Hinweis.

Das Beschleunigen muss auch gar nicht einfach beeinflusst werden. Es darf ruhig etwas Tricky oder Dirty sein.

Gibts noch weitere Maßnahmen/Möglichkeiten?

Danke, liebe Grüße

Sabine


  


Betrifft: AW: Access-Daten einlesen beschleunigen von: EtoPHG
Geschrieben am: 24.08.2004 17:08:54

Hallo Sabine,

Also hier kommt tricky, aber nicht dirty....

Anstelle des Codes:
Erstelle eine Query-Objekt (Menü Daten Externe Daten ...)
Gib ihm z.B. den Namen "KundenAbfrage"
Es sieht so aus, als ob dein SQL dynamisch nach der Kundennummer verlangt.
Erstelle das Queryobjekt zuerst mit einer festen Kundennummer.
Erstelle einen Button und ein VBA Makros, der nach der Kundennummer fragt (z.B. Inputbox). Mit der Kundennummer manipulierst Du anschliessend den .SQL teil des Queries und führst es aus. Codemässig würde der Teil in etwa so aussehen:


Dim sSQL as string
sSQL = "SELECT * FROM tblKunde WHERE (tblkunde.KdNr ='" & KdNummerVonInputBox & "')"
QueryTable("KundenAbfrage").Sql = sSQL
Selection.QueryTable("KundenAbfrage").Refresh BackgroundQuery:=False


Ich habe bewusst auf den LIKE %xxx% verzichtet. Achte darauf, dass in der AccessDB die tblkunde.Kdnr ein INDIZIERTES Feld ist. Ein LIKE muss immer einen FULL-TABLE SCAN machen, was bei umfangreichen Tables lange dauern kann.

Alles klar ???


Gruss Hansueli


  


Betrifft: AW: Access-Daten einlesen beschleunigen von: Sabine M.
Geschrieben am: 24.08.2004 18:43:45

Hallo Hansueli,

danke für den Hinweis.

Auch das hatte ich bereits Ergebnislos versucht. Die Query dauert teilweise sogar etwas länger als das Recordset. Dabei ist relativ unerheblich, ob ich nun mit oder ohne Like arbeite. Kann das wirklich sein?

Auf die Tabelle habe ich keinen Einfluss, d.h. auch nicht auf den Index. Zudem beinhaltet die von mir abgefragte Tabelle mehrere Werte, die ich per Like abgefragen muss (ich habe nicht den gleichen Aufbau wie in dem Beispiel aus dem Board, das ich als Grundlage verwendet habe).

Gruß

Sabine

PS: liegt die Access-DB lokal ab und bin ich allein damit am Arbeiten habe ich nen schnellen Zugriff, da dauert alles in allem gerade mal 0,3-0,4 Sekunden. Sobald ich aber die Datei im Netzwerk mit mehreren Nutzern nehme sieht es anders aus.


  


Betrifft: AW: Access-Daten einlesen beschleunigen von: EtoPHG
Geschrieben am: 24.08.2004 21:40:59

Hallo Sabine,

Deine Aussagen belegen in dem Fall ziemlich klar, dass die Geschwindigkeitsverluste am
a) Server, Ladevorgang der AccessEngine, Memory um DB-Daten zu cachen, Ev. Konfiguration der DB
und ev.
b) an der Übertragungsleistung des Netzwerkes liegen muss.

Gruss Hansueli


  


Betrifft: AW: Access-Daten einlesen beschleunigen von: Sabine
Geschrieben am: 26.08.2004 21:02:39

Hallo,

danke Dir für Deine Rückmeldung. Konnte Krankheitsbedingt nicht früher antworten,

Sabine


 

Beiträge aus den Excel-Beispielen zum Thema "Access-Daten einlesen beschleunigen"