Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi QuantumGrid (https://www.delphipraxis.net/62547-quantumgrid.html)

kaschn 6. Feb 2006 10:30


QuantumGrid
 
Ich verwende seit einiger Zeit das Quantum Grid.
Eigentlich ein tolle Sache!
Wenn die Anzahl der Datensätze steiht, wird das Grid aber extrem langsam.
Vermutlich liegt die Ursache darin, dass vor eigentlichen Sortierung jeweils alle Datensätze komplett übernommen.
Ich kann daher das Grid sinnvoll nur einsetzen, wenn durch eine vorherige Filterung im Table oder Query die Anzahl der Datensätze beschränkt wird.

Hat jemand dazu andere Erfahrungen,mache ich was falsch?

chaosben 6. Feb 2006 10:33

Re: QuantumGrid
 
Nun ja, es ist generell sinnvoll, sich die Daten so weit wie möglich von der DB aufbereiten zu lassen und dann nur das Nötigste von der Anwendung machen zu lassen. Z.B. die Sortierung: Guck mal unter dem Stichwort "ORDER BY". Desweiteren kann der "WHERE"-Teil viel Arbeit übernehmen.

dataspider 6. Feb 2006 10:59

Re: QuantumGrid
 
Hi,

den Umgang mit den Grids von Developer Express muss man echt erlernen.
Dein Fehler ist, dass du nicht im GridMode arbeitest (View.DataController.DataModeController.GridMode).
Bei grossen Tabellen musst du den GridMode auf True setzen.
Es gibt auch eine GridModeDEMO, wo du dir abgucken kannst, wie man das Filtern und Sortieren dann entsprechend über das SQL - Statement selbst machen kannst.
Nur das Grouping geht im GridMode nicht.

Cu, Frank

AirJordan 6. Feb 2006 11:18

Re: QuantumGrid
 
Hallo,

ich setze ab 1000 Datensätze den GridMode auf True und lasse immer nur 200-300 Datensätze anzeigen.
Beim Scrollen lädt er dann die nächsten 200 Datensätze recht flott nach. Alles was unter 1000 Daten-
sätze ist, setze ich GridMode auf false.

Parallel arbeite ich mit SQL Anweisungen die schon aus der kompletten Datenbank die Daten aufbereiten.

BTW:
Wie managed ihr das mit dem QuantumGrid, wenn ihr zb. über ein PopUp-Menü einen Wert in einem Daten-
bankfeld ändern wollt. Über die Editfelder in dem Grid ist das ja kein Problem, dann regelt das SpinEdit
oder MaskEdit den Eintrag in den richtigen Datensatz und in das richtige Feld. Aber wie geht das über
eine Routine die extra aufgerufen wird??? :gruebel:

kaschn 6. Feb 2006 16:56

Re: QuantumGrid
 
Besten Dank für den Hinweis auf "GridMode".
Allerdings: Wenn ich den aktiviere muss ich die Sortierung und Filterung wie bisher extern erledigen.
Dann brauche ich auch kein teueres QuantumGrid, oder?

Das QuantumGrid hat für mich den Vorteil, dass der Kunde sehr flexible selbst eingreifen kann.
Aber eben nur wenn ich schon vorher filtere und die Daten begrenze. Damit ist der Vorteil wieder weg.

An Air Jordan: Wie machst du das mit der Begrenzung auf 1000 Datensätze und dem Scrollen???

AirJordan 6. Feb 2006 17:22

Re: QuantumGrid
 
GridMode := true und GridModeBufferCount := 200 (oder anderen Wert)

dataspider 6. Feb 2006 17:42

Re: QuantumGrid
 
Zitat:

Zitat von kaschn
Besten Dank für den Hinweis auf "GridMode".
Allerdings: Wenn ich den aktiviere muss ich die Sortierung und Filterung wie bisher extern erledigen.
Dann brauche ich auch kein teueres QuantumGrid, oder?

Das QuantumGrid hat für mich den Vorteil, dass der Kunde sehr flexible selbst eingreifen kann.
Aber eben nur wenn ich schon vorher filtere und die Daten begrenze. Damit ist der Vorteil wieder weg.

An Air Jordan: Wie machst du das mit der Begrenzung auf 1000 Datensätze und dem Scrollen???

Ich glaube, du hast das Prinzip noch nicht ganz verstanden.
Eine Grid kann nicht gruppieren, Summen- und Gruppensummen etc. darstellen, wenn es nicht alle Daten im Speicher hat.
Wenn du dir die GridModeDEMO mal anschaust, wirst du sehen, dass die Steuerung der Sortierung und Filterung immer noch recht einfach ist.
Schliesslich liefert dir der Filter den kompletten Where - Teil des SQL - Statements und auch das Sort - Statement.

Und für die Leistungen wie Master - Detail, CardView, ChartView und alle Editoren, Style- Controller etc. kann man sich über den Preis sicher nicht beschweren.

Cu, Frank

AirJordan 7. Feb 2006 07:56

Re: QuantumGrid
 
Zitat:

Zitat von dataspider
Ich glaube, du hast das Prinzip noch nicht ganz verstanden.
Eine Grid kann nicht gruppieren, Summen- und Gruppensummen etc. darstellen, wenn es nicht alle Daten im Speicher hat.
Wenn du dir die GridModeDEMO mal anschaust, wirst du sehen, dass die Steuerung der Sortierung und Filterung immer noch recht einfach ist.Schliesslich liefert dir der Filter den kompletten Where - Teil des SQL - Statements und auch das Sort - Statement.

Also ich habe in einem Grid auch mit SQL nur einen Teil der gesamten Datenmenge selektiert und kann auch mit
Gruppierungen und AVG, SUM Auswertungen über das QuantumGrid arbeiten. :roll:

dataspider 7. Feb 2006 09:29

Re: QuantumGrid
 
Zitat:

Zitat von AirJordan
Also ich habe in einem Grid auch mit SQL nur einen Teil der gesamten Datenmenge selektiert und kann auch mit
Gruppierungen und AVG, SUM Auswertungen über das QuantumGrid arbeiten.

Das ist richtig. Aber du hast GridMode auf False und lädst damit alle Datensätze in den lokalen Speicher, die du mit deinem Statemant selektiert hast. Liefert dein Select also 10.000 Datensätze, so werden diese vom Server auf deinen Client übertragen.
Wenn ich aber z.B. alle Rechnungen anzeige (select * from Rechnung), solte ich ich GridMode auf True stellen, das es dann auch mal 1000.000 Datensätze sein können. Damit muss ich dann Sortierung, Filterung und Gesamtsummen im Code erledigen. Aber auch dies finde ich bei den QuantumGrids sehr gut gelöst.

Cu, Frank

AirJordan 7. Feb 2006 10:29

Re: QuantumGrid
 
Hallo Frank,

hmm :gruebel: ich habe mein select und als Ergebnis bekomme ich 1000 Datensätze. Diese Datensätze lasse
ich in meinem Grid anzeigen und setze das auf GridMode := true und GridModeBufferCount := 200. In der
Gruppe für das Feld Datum lasse ich aber zb ein AVG oder COUNT durchlaufen und die Werte die dort ange-
zeigt werden stimmen. :roll:

Also geht doch ein Gruppieren und GridMode=true mit einem SQL Statement. Oder bin ich auf dem falschen
"Dampfer"?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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