![]() |
Datenbank: MSaccess • Version: 2003 • Zugriff über: ADO
Schnelles schreiben in Access DB
Hi,
ich nutze eine ADOconnection die zu einer Access Testdatenbank verbunden ist. Normal eingestellt: Read/Write. An die Connection ist eine ADOtable angeflanscht.
Delphi-Quellcode:
Wenn ich diesen Programmteil laufen lasse dauert es mehr als 6 Sekunden bis dieser Teil abgeschlossen ist. Bei 10000 dauerts 1:07
For n:=1 to 1000 do
begin ADOTable1.Append; ADOTable1.FieldByName('Nummer').AsInteger:=n; ADOTable1.Post; end; Hab den post auch schon aus der For Schleife rausgezogen es hat sich nichts geändert. Gibt es (ausser BDE und DBexpress) noch andere Möglichkeiten? Fremdkomponenten kommen nicht in Frage (kosten Geld). Mach ich sonst irgendetwas falsch? Grüsse rainer |
Re: Schnelles schreiben in Access DB
Versuch mal
Delphi-Quellcode:
For n:=1 to 1000 do
begin ADOTable1.Append; ADOTable1.FieldByName('Nummer').Value:=n; end; ADOTable1.Post; |
Re: Schnelles schreiben in Access DB
Welche Curserlocation verwendest du?
Bei Access ist clUseServer angesagt. |
Re: Schnelles schreiben in Access DB
Hi mkinzler,
ich will ja nix sagen, aber: Zitat:
Ich kann leider auch nicht von Access weg. Grüsse rainer |
Re: Schnelles schreiben in Access DB
Hi,
ich nutze: clUseClient ich probiers aus. Grüsse Rainer |
Re: Schnelles schreiben in Access DB
Hi,
hab bei Tadoconnection und bei Tadotable cursorlocation auf clUseServer gesetzt, jetzt funktioniert das! In der Delphi Hilfe steht: Zitat:
Kann mir das jemand mit kurzen Worten erklären! Grüsse Rainer |
Re: Schnelles schreiben in Access DB
Du hast mit Access ein Desktop-DB. Die Logik läuft alles in deinem Adressraum und die Daten liegen auch schon so vor das ein Clientseitiger Curser nur unnötige Speicherkopieraktionen bewirkt.
|
Re: Schnelles schreiben in Access DB
Hi,
sorry aber ist mir immer noch zu lahm. Ich habe jetzt für einen Durchsatz von 100000 Integerzahlen einen Zeitbedarf von 57sec d.h. der Rechner braucht 0,6 msec / Datensatz. Das kann doch nicht der Weisheit letzter Schluss sein. Wenn ich den post verlagere braucht er sogar noch länger. Kann ich den Datenbankinhalt irgendwie im Speicher halten, sodass wenigstens die Plattenzugriffe reduziert werden? Grüsse Rainer |
Re: Schnelles schreiben in Access DB
Du könntest versuchen mit INSERTS-Statements direkt arbeiten. Diese dann prepared Anlegen und u.U. mehrere Inserts in einem Statement laufen lassen. Ob das jedoch bei Access viel bringt?
Wenn schau mal ob nicht evtl. ein Virenscanner die MDB-Dateien permanent checkt. |
Re: Schnelles schreiben in Access DB
Oh Mann,
unser Mcafee. Das könnte sein! Danke Bernhard Grüsse Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz