Schnellerer Zugriff auf Access

Hallo
ich möchte in Access mit VB Daten einlesen.
Leider bin ich nicht ganz zufrieden mit der Leistung bei mehr als 1000 Datensätzen.

Ich weiss, es muß eben jeder Datensatz erst angelegt, dann gefüllt und dann abgespeichert werden. Dazu kommen noch formatierungen.

Das ganze ist zudem immer Rechnerabhängig.

Trotzdem vielleicht kennt jmd den Turbobooster Trick.

Es gehr wie gesagt um eine Accessdatenbank auf die nur über VB zugegriffen (Daten gelöscht, verändert oder zugefügt) werden.

Mfg Werner

Hallo.

Leider bin ich nicht ganz zufrieden mit der Leistung bei mehr
als 1000 Datensätzen.

Es gehr wie gesagt um eine Accessdatenbank auf die nur über VB
zugegriffen (Daten gelöscht, verändert oder zugefügt) werden.

Mach bitte ein paar Angaben, auf welchem Weg Du die Tabellen updatest : Schieres VB (z.B. über Recordsets mit Einzelsatzverarbeitung) ist für Massendaten gelinde gesagt nicht optimal. Eventuell lässt sich auf dem Weg über dynamische SQL die Geschwindigkeit erhöhen.

Wie gesagt, gib noch etwas Input.

Gruß Eillicht zu Vensre

Hallo,

bzgl. dieses Problems, das ich vor einiger Zeit auch hatte, habe ich folgendes festgestellte:
Bei meiner Systemkonfig. (WinXP,Access2002, 3,0Ghz CPU, S-ATA Raid) und einem Datenvolumen von ca. 580 000 Datensaetzen in 2 Tabellen.

  1. Variante 2 Recordsets (1 X Lesen. 1 X Schreiben) ca.48min
  2. Variante 1 Recordset lesen, Schreiben mittels db.EXECUTE sql 32min
  3. VB6 Programm mit identischem Code zu 2. 14min

Also falls es sich nur um eine Updateroutine handelt und du Zugang zu einem VB6 hast, wuerde sich anbieten eben diese Funktion in ein VB-Prgramm ( ewt. ActiveX) einzubauen und dieses aus deiner Access-Anwendung aufzurufen.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

INput
Hi
also nochmal, ich sitze am Einzelplatz und bin der einzige der auf diese Datenbank Access zugreift.

Es geht ums einlesen von Daten, welche formatiert werden und
dann zeilenweise per Recordset eingelesen und jeweils update
durchgeführt wird.
Meine Routine sieht dann so aus:
Rst ist mein Recordset, cn mein Connectionstring,
Meldung mein Pfad und Datensatz die Spalte, nach der sortiert wird

With RsT
.ActiveConnection = Cn
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Source = Meldung & " ORDER BY Datensatz"
.Open
.moveFirst
End With

Do Until (EOF)
.AddNew
.Fields(0) = PN
.Fields(1) = RW
.Fields(2) = HW
.Fields(3) = HO
.Fields(4) = CO
.Fields(11) = ZE
.Fields(12) = DA
.Fields(13) = IO
.Fields(15) = LI

.Update

Loop

Dann werden den Felder die formatierten Daten zugewiesen und das ganze
Zeilenweise gespeichert.

Ich habe schon auch mal die adBatchOptimistic Methode gewählt.
Damit geht es aber auch nicht schneller, der Speichervorgang wird dann
eben am Ende größer.

Ich weiss auch nicht, vielleicht gehts auch nicht schneller oder ich brauch eine andere Datenbank, aber das will ich eigentlich nicht

Mfg Werner

Holla.

Dann werden den Felder die formatierten Daten zugewiesen und
das ganze Zeilenweise gespeichert.

Und das dürfte der Faktor sein, der die Abwicklung so ausbremst.

Ich weiss auch nicht, vielleicht gehts auch nicht schneller
oder ich brauch eine andere Datenbank, aber das will ich
eigentlich nicht

Brauchst Du m.E. auch nicht; mit dynamic SQL wird es schneller :

Dim SQLStmnt As String

SQLStmnt="INSERT bla INTO blubb ORDER BY "+DeinSortFeld

DBName.Execute SQLStmnt

nach dem Schema sollte es bedeutend schneller gehen. Immerhin reduziert das die Einfügung neuer Datensätze auf einen Schub, und er muss nicht ständig neue Records einzeln allozieren.

Gruß Eillicht zu Vensre

Hallo,

gib doch mal eine Angabe darueber wie das Zeitverhalten ist, damit wir vieleicht abschaetzen koennen ob das im normalen Bereich liegt, oder aber ewt. ein anderer Faktor die Sache ausbremst. z.B. bremsen Anwendungen wie AntiVir oder Norton-Antivirus die Access Datenzugriffe mit ca. dem Faktor 3 - 5 aus.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi
Hi
ich kenne diese Befehle leider nicht, ist der Befehlstext dann wirklich alles. Und was ist mit dem öffnen der DB über Recordset und connection, fällt das dann weg??? Sind die Befehle für VB6 geeignet???

Ich habe immer das Gefühl, je mehr Daten importiert werden, desto langsamer wird es mit der Zeit. Am Anfang gehts noch schnell und dann wirds immer lahmer (ein Balken zeigt mir das an).

hat das mit dem Speicher zu tun, könnte man den viellceicht noch irgendwie immer zwischendurch leeren???

Meld dich bitte nochmal kurz bzgl. meiner Fragen.

Mfg werner

TRANSACTION

UND DAS IST super schnell