![]() |
Datenbank: Absolute Database • Version: 5 • Zugriff über: Direkter Treiber
Warum werden Daten in DB-Komp. so schnell dargestellt?
Hallo zusammen,
ich programmiere noch nicht sehr lange in Delphi und schlage mich gerade mit Datenbanken herum. Nachdem bei mir das Einlesen von Datensätzen immer länger dauert als in eine per DataSet verbundene Komponente, z.B. DBGrid, frage ich mich, woran das liegt. Was wird intern anders geregelt? :gruebel: Oder ist es nur effektiver programmiert? Das Einlesen der Datensätze mache ich mit der auch hier schon geposteten While not EOF-Schleife und einem "Next" um zum nächsten Datensatz zu springen. Würde mich freuen, wenn da jemand Rat weiß Gruß Pfoto |
Re: Warum werden Daten in DB-Komp. so schnell dargestellt?
hi,
nun hab ich mit "Absolute Database" noch nicht gearbeitet.... aber bei Interbase und BDE Datenbanken wird in das Grid nur soviel geladen, wie grad auf dem Bildschirm zu sehen ist... (ok, an die Nörgler: ein paar Records mehr werden schon geholt, damit das browsen flüssiger geht) wenn du im Grid bis ans Ende springst, dann braucht auch das Grid lange, da erst alle Daten geholt werden müssen |
Re: Warum werden Daten in DB-Komp. so schnell dargestellt?
Unter Umständen hängt an deiner Tabelle auch eine Datasource, an die wiederum datensensitive Controls gebunden sind.
Diese Controls werden bei jedem Wechseln des aktuellen Datensatzes neu gezeichnet. Wenn das viele Controls (sei datensensitiven Grids u.U. auch viele Datensätze) sind, dann dauert das schon eine Weile. Wenn du die Tabelle mit "While not bla.EOF do ..." durchläufst, solltest du das Neuzeichnen der datensensitiven Controls in dieser Zeit unterbinden.
Delphi-Quellcode:
Schöne Grüße,
MeineAdsTable.DisableControls;
try MeineAdsTable.first; While not MeineAdsTable.eof do begin bla ... MeineAdsTable.next; end; finally MeineAdsTable.EnableControls; end; Jens |
Re: Warum werden Daten in DB-Komp. so schnell dargestellt?
Zitat:
Zitat:
|
Re: Warum werden Daten in DB-Komp. so schnell dargestellt?
Zitat:
Ich habe es eben mal mit der Absolute Database getestet: Testtabelle mit 1 000 Einträgen (name,vorname,strasse,plz,ort). Diese habe ich mit einer While-Do-Schleife in ein TListView geladen. Ohne eine [oh].BeginUpdate / .EndUpdate[/oh]: ca. 820 ms Mit [oh].BeginUpdate / .EndUpdate[/oh]: ca. 280 ms |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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