AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Warum werden Daten in DB-Komp. so schnell dargestellt?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum werden Daten in DB-Komp. so schnell dargestellt?

Ein Thema von Pfoto · begonnen am 20. Sep 2005 · letzter Beitrag vom 20. Sep 2005
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Warum werden Daten in DB-Komp. so schnell dargestellt?

  Alt 20. Sep 2005, 00:11
Datenbank: Absolute Database • Version: 5 • Zugriff über: Direkter Treiber
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?
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
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Warum werden Daten in DB-Komp. so schnell dargestellt?

  Alt 20. Sep 2005, 06:31
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
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#3

Re: Warum werden Daten in DB-Komp. so schnell dargestellt?

  Alt 20. Sep 2005, 07:18
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:
MeineAdsTable.DisableControls;
try
  MeineAdsTable.first;
  While not MeineAdsTable.eof do
  begin
    bla
    ...

    MeineAdsTable.next;
  end;
finally
  MeineAdsTable.EnableControls;
end;
Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Warum werden Daten in DB-Komp. so schnell dargestellt?

  Alt 20. Sep 2005, 08:16
Zitat von Pfoto:
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.
Läufst du mit verbundenen DBGrid (oder allgemein Oberflächencontrol) durch die Datenmenge?

Zitat von Pfoto:
Was wird intern anders geregelt?
Oder ist es nur effektiver programmiert?
Bei guten DBGrids wird der Page-Modus verwendet (Fetche nur die Daten zum Client die aktuell nötig sind) und der Rest wird teilweise Asynchron nachgeladen (Möglich z.B. bei Zugriff über ADO mit serverseitigen Curser).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Warum werden Daten in DB-Komp. so schnell dargestellt?

  Alt 20. Sep 2005, 08:17
Zitat von jensw_2000:
... solltest du das Neuzeichnen der datensensitiven Controls in dieser Zeit unterbinden.
Auch wenn nicht datensensitive Controls verwendet werden sollte man deren neuzeichnen während des Füllens verhindern.
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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz