AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid scrolling

Ein Thema von Tsunami · begonnen am 6. Mär 2005 · letzter Beitrag vom 7. Mär 2005
Antwort Antwort
Tsunami

Registriert seit: 28. Feb 2005
3 Beiträge
 
#1

DBGrid scrolling

  Alt 6. Mär 2005, 19:01
Datenbank: firebird embedded • Version: 1.5.2.4731 • Zugriff über: ZEOS 6.1.5 inkl Patch 2
Programme :
Delpi 7 Pro + Firebird embedded + Zeos

Problem :
Beim Ziehen des Scrollbalkens mit der Maus wird der Inhalt eine TDBGrid
nicht aktualisiert, der Inhalt scrollt also nicht mit.
Erst nach Loslassen der Maustaste wird der Inhalt des Stringgrid aktualisiert.

Frage :
Was muss ich einstellen, damit der Inhalt des TDBGrids auch während des
Scrollens aktualisiert wird oder welches andere Grid oder Listbox etc könnte ich nehemen,
damit diese Aktualisierung sofort erfolgt?

Bei einem TStringGrid währe das die Option GoThumbTracking,
aber die gibt es bei einem TDBGrid nicht, oder doch?

Auch ein OnMouseMove-Ereignis mit DBGrid1.Repaint; funktioniert nicht.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#2

Re: DBGrid scrolling

  Alt 6. Mär 2005, 20:27
N´abend,

sorry, da gibt es prinzipbedingt keine Lösung mit TDBGrid. Hintergrund ist, das DBDataset die Daten immer Packetweise anfordert, was für die Datenbankansteurerung auch Sinn macht. Der Haken zeigt sich am DBGrid. Es läd die Datensätze nicht Zeilenweise zu. Der Scrollbalken ist zudem nicht proportional. Kann er auch nicht sein, da das Grid kein Wissen über die gesamte Menge der Abfrage hat und im Dataset diese auch nicht hinterlegt ist, sondern nur die Kriterien nach denemn nachgeladen wird, wenn man an das Ende/den Anfang des aktuellen Pakets kommt.

Eine Lösung wäre eine SQL-Abfrage durchzuführen und die Daten von Hand in ein StringGrid einzulesen. Das kann bei großen Mengen aber zu erheblichen Speicherverbrauch führen und hier ist man daher gehalten diese Maximalmenge über die Query von Hand zu begrenzen und wahrscheinlich vor der eigentlichen Abfrage zunächst ein Datensatztcount laufen zu lassen, um festzustellen wieviel Datensätze man nun zu erwarten hat.

FAZIT: Es ist ein Systemproblem und läßt sich nur auf Umwegen mit deutlichem Aufwand lösen.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DBGrid scrolling

  Alt 6. Mär 2005, 20:31
Zitat von mschaefer:
N´abend,

sorry, da gibt es prinzipbedingt keine Lösung mit TDBGrid. Hintergrund ist, das DBDataset die Daten immer Packetweise anfordert, was für die Datenbankansteurerung auch Sinn macht. Der Haken zeigt sich am DBGrid. Es läd die Datensätze nicht Zeilenweise zu. Der Scrollbalken ist zudem nicht proportional. Kann er auch nicht sein, da das Grid kein Wissen über die gesamte Menge der Abfrage hat und im Dataset diese auch nicht hinterlegt ist, sondern nur die Kriterien nach denemn nachgeladen wird, wenn man an das Ende/den Anfang des aktuellen Pakets kommt.

Eine Lösung wäre eine SQL-Abfrage durchzuführen und die Daten von Hand in ein StringGrid einzulesen. Das kann bei großen Mengen aber zu erheblichen Speicherverbrauch führen und hier ist man daher gehalten diese Maximalmenge ücer die Query von Hand zu begrenzen und wahrscheinlich vor der eigentlichen Abfrage zunächst ein Datensatztcount laufen lassen, um festzustellen wieviel Datensätze man nun zu erwarten hat.

FAZIT: Es ist ein Systemproblem und läßt sich nur auf Umwegen mit deutlichem Aufwand lösen.
Das stimmt so nicht. Wenn der verwendete TDataSet-Abkömmling bzw. die zugrundeliegende Datenbank sequenzierte DataSets zuläßt, dann kann man durch Setzen der entsprechenden Option im DataSet dies Einschalten und hat eine korrekte proportionale Darstellung des Scrollbalkens. Es werden aber (meist im Hintergund) alle Daten geladen. Die DataSet Komponente sollte dies aber optimal regeln.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

Re: DBGrid scrolling

  Alt 6. Mär 2005, 21:39
Moin, moin,

Lesen hilft! Unter der Kombination Firebird-Zeos ist das wie ich beschrieben habe. Bei den Filedatenbanken Paradox und DBase gab es meines Erachtens so eine Einstellung wie Du beschrirben hast, bin mir da aber nicht mal sicher. Wenn Du Dich mit den Zeos-Datasets auskennst, wirst Du auch die entsprechende Eigenschaft/Property benennen können wo dies einzustellen ist. Kenne Zeos gut und mir ist da keine Möglichkeit bekannt, aber ein Beispiel würde mich überzeugen...

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DBGrid scrolling

  Alt 6. Mär 2005, 22:20
Zitat von mschaefer:
Moin, moin,

Lesen hilft! Unter der Kombination Firebird-Zeos ist das wie ich beschrieben habe. Bei den Filedatenbanken Paradox und DBase gab es meines Erachtens so eine Einstellung wie Du beschrirben hast, bin mir da aber nicht mal sicher. Wenn Du Dich mit den Zeos-Datasets auskennst, wirst Du auch die entsprechende Eigenschaft/Property benennen können wo dies einzustellen ist. Kenne Zeos gut und mir ist da keine Möglichkeit bekannt, aber ein Beispiel würde mich überzeugen...

Grüße // Martin
Sorry. Sequencing wird wohl erst in Zeos 6.5 realisiert, und das ist momentan noch eine Alpha.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: DBGrid scrolling

  Alt 7. Mär 2005, 06:54
Moin Union,

dann lass uns mal überraschen wie das nachher läuft.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Tsunami

Registriert seit: 28. Feb 2005
3 Beiträge
 
#7

Re: DBGrid scrolling

  Alt 7. Mär 2005, 12:38
Ich seh' schon, ich bin hier genau richtig, um dumme Fragen zu stellen.
Eure Antworten helfen mir sehr weiter und ich werde es mal mit einem StringGrid probieren.
Wegen dem Speicherverbrauch hoffe ich, das das Betriebssystem das irgendwie regelt außerdem geht es nur um eine relativ kleine Datenbank mit maximal 10.000-100.000 Einträgen zu je maximal 80 Zeichen für diese Liste. Das wären also maximal 8 MB Speicherverbrauch und das sollte erstmal kein Problem sein,
oder irre ich mich da?

Gibt es eventuell einen besseren Weg, um auf eine Firebird embedded Datenbank zuzugreifen, ohne ZEOS zu benutzen und ohne ein Produkt kaufen zu müssen?
  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 10:23 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