![]() |
Datenbank: Access, Paradox • Version: 7 • Zugriff über: SQL
CLientDataset ApplyUpdates sehr langsam
Hallo,
Ich habe eine Access Tabelle mit ca. 20000 Einträgen nach Paradox exportiert. Dabei ist es mir nicht gelungen, die Sonderzeichen (ä,ü,ß, etc.) sauber zu übertragen. Meine Lösung: Ich übertrage die exportierte Paradox-Tabelle in ein ClientDataset. Mit einer Stringroutine finde ich dann in jedem Rekord in allen Stringfeldern die Sonderzeichen und ersetze sie mit den für Paradox lesbaren Zeichen. Das geht recht schnell (12 Sekunden), da alles im Memory abläuft. Damit habe ich im Clientdataset eine fehlerfrreie Paradoxtabelle, die ich auch in einem StringGrid kontrollieren kann. :-D Wenn ich dann anschließend ClientDataset.ApplyUpdates(-1) aufrufe, dann dauert das endlos lange. Ich dachte zuerst, das Programm hätte sich aufgehängt, aber nach 7 Minuten ! :pale: war alles einwandfrei übertragen. Kennt jemand eine Möglichkeit, wie man das beschleunigen kann? Dank im Voraus für jede Hilfe und Anregung. |
Re: CLientDataset ApplyUpdates sehr langsam
Hallo,
Du solltest einfach innerhalb Deiner ersten Schleife alle ca. 200 Datensätze ApplyUpdates aufrufen. Alternativ würde ich vorschlagen solche "Einmalaktionen" nicht über ClientDataSets abzuwicklen, sondern direkt mittels TQuery etc. mr2 |
Re: CLientDataset ApplyUpdates sehr langsam
Hallo mr2
Dank für Deinen Tipp. Leider dauert die Schleife dann auch 7 Minuten, wenn ich nach allen 200 records ApplyUpdates aufrufe. Es handelt sich auch nicht um "Einmalaktionen", sondern um Daten wie Bankleitzahlen, Postleitzahlen und Ähnliches, die ich nur als Access-Dateien im Internet gefunden habe. Diese Daten müssen einmal im Monat im Anwendungsprogramm upgedated werden. ClientDataset hat den echten Vorteil, daß die Konvertierung der Umlaute damit sehr schnell abläuft. Als nächstes werde ich versuchen mit einer Schleife alle Datensätze aus ClientDataset direkt auszulesen und mit Append in eine Paradox Tabelle einzulesen. Aber vielleicht hat jemand noch eine bessere Lösung?? |
Re: CLientDataset ApplyUpdates sehr langsam
Hallo an Alle die es interessiert,
Problem gelöst. Ich lese aus dem Clientdataset die Struktur aus und erzeuge damit dynamisch eine leere Paradoxtabelle mit gleicher Struktur. Dann habe ich mit einer while not EOF Schleife alle Datensätze von dem CDS in die Tabelle kopiert. Das dauerte 75 Sekunden. Eigentlich erstaunlich: ApplyUpdates muss ja nur die geänderten Felder übertragen und braucht dafür 7 Minuten. Vielleicht liest dies auch ein Delphi Guru, der mir erklären kann, warum ApplyUpdates so langsam ist. |
Re: CLientDataset ApplyUpdates sehr langsam
Hallo,
1. falsche Datenbank jaja, musste sein ;) 2. ApplyUpdates prüft wohl jeden der 20000 Datensätze vor dem Speichern, ob sich was geändert hat dein while not EOF wohl nicht (?) Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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