Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO, Grid und SQL mit JOIN (https://www.delphipraxis.net/47232-ado-grid-und-sql-mit-join.html)

TPeterT 9. Jun 2005 06:25

Re: ADO, Grid und SQL mit JOIN
 
Hi nochmals!
Ihr schreibt teilweise ihr verwendet diese Methode für viele bzw für wenige Daten.
Habe es mit ca 100 Datensätzen versucht -> Performance noch ok..
Mit 5000 Datensätzen dauert das füllen des Grids ewig lange..
Das Problem ist, dass ich sehr viele DS habe und die Sache mit der While-Schleife deshalb nicht ordentlich funktioniert...

jensw_2000 9. Jun 2005 08:39

Re: ADO, Grid und SQL mit JOIN
 
Für die schlechte Performance habe ich grade keine pauschale Lösung.
Abhängig von den verwendeten Datentypen, der Spaltenanzahl, der Geschwindigkeit der Datenquelle usw. sollte das Grid zwischen 2000 und 20.000 Records pro Sekunde laden.

Das BeginFULLUpdate und EndFULLUpdate hast du doch gesetzt oder ?

An deiner Query hängen während des Ladens der Datensätze hoffentlich keine anderen, datensensitiven, Steuerelemente oder ? Nicht das Diese das laden ausbremsen ... (Stichwort: EnableControls, Disablecontrols)

Was die Performance sehr stark runterzieht ist unter anderem auch, wenn das CellAutoWidth (o.Ä.) eingeschaltet ist.

Etwas Source und wäre jetzt sicher hilfreich um das Problem schneller zu lokalisieren ....

Alternativ kannst du ja mal in den DevExpress NewsGroups nachschauen ..



Schöne Grüße,
Jens

alzaimar 9. Jun 2005 09:25

Re: ADO, Grid und SQL mit JOIN
 
Zitat:

Zitat von jensw_2000
Das BeginFULLUpdate und EndFULLUpdate hast du doch gesetzt oder ?
...
Was die Performance sehr stark runterzieht ist unter anderem auch, wenn das CellAutoWidth (o.Ä.) eingeschaltet ist.

Wird DAS nicht gerade durch das Begin/EndFullUpdate temporär ausgeschaltet?

TPeterT 9. Jun 2005 10:37

Re: ADO, Grid und SQL mit JOIN
 
Hallo!

Das Problem mit der Geschwindigkeit habe ich nun gelöst. Hatte die Datasource der Query beim Start zugeordnet.

Das Problem im Moment ist, dass keine Daten im Grid angezeigt werden.

Hier der Code:
Code:
procedure Tfrm_Main.Button2Click(Sender: TObject);
 var
   i     : Integer;
   RecNo : Integer;
begin

      TableView_Vertraege.DataController.BeginFullUpdate;
      Q_Contract.First;

      i:=0;

      While not Q_Contract.EOF do
      begin
        TableView_Vertraege.DataController.AppendRecord;

        TableView_Vertraege.DataController.Values[i, tvcVertragsgruppe.Index]  :=
                           Q_Contract.Fieldbyname('DOCContractGroup_Name').AsString;

        i:=i+1;
        Q_Contract.Next;
      end;

      TableView_Vertraege.DataController.EndFullUpdate;

      //DS_Contract.DataSet := Q_Contract;
end;

Liebe Grüsse
Peter

TPeterT 9. Jun 2005 11:24

Re: ADO, Grid und SQL mit JOIN
 
Hallo Nochmals!
Hab ich oben etwas schlecht beschrieben:
Die Zeilen im Grid sind zwar vorhanden, aber diese sind leer...

liebe Grüsse
peter

jensw_2000 9. Jun 2005 22:44

Re: ADO, Grid und SQL mit JOIN
 
Hast du dir die Beispiele von DevExpress schon mal angesehen ?
Die sind wirklich gut ...

Falls es dann immer noch klemmt mache dir in den nächsten Tagen mal ein ganz kleines Beispiel Projekt fertig.
Komme aber erst Anfang nächster Woche dazu.

Zitat:

Zitat:

Das BeginFULLUpdate und EndFULLUpdate hast du doch gesetzt oder ?
...
Was die Performance sehr stark runterzieht ist unter anderem auch, wenn das CellAutoWidth (o.Ä.) eingeschaltet ist.
Wird DAS nicht gerade durch das Begin/EndFullUpdate temporär ausgeschaltet?
@alzaimar
Wenn BeginnFullUpdate gesetzt wurde, wird die Zellenbreite (ColumnAutoWidth) nicht beim Laden der Datensätze angepasst.
Jedoch wenn Das EndFullUpdate kommt wird das Grid die eingestellte Anzahl Datensätze durchscrollen, um die optimale Spaltenbreite zu ermitteln. Wenn man die Anzahl sehr hoch ansetzt dauert das schon eine Weile.
Da EndFullUpdate unmittelbar nach dem Einlesen der Daten aufgerufen wird, kann einem das schon so vorkommen, als würde das Laden ewig dauern ...




Schöne Grüße,
Jens

TPeterT 10. Jun 2005 05:30

Re: ADO, Grid und SQL mit JOIN
 
Hallo!
Ja - habe mir auch schon die Demos angesehen...

habe ich unter Umständen die falschen Komponenten verwendet?
TcxGrid - TcxGridTableView - TcxGridColumn

Wenn ich nämlich ansttt des Grids eine Listbox verwende funktioniert der "Datenimport"...

Unter der DevExpress-Hilfe (http://www.devexpress.com/Support/Kn...troller.values) ists auch ganz gleich beschrieben...

Könntest du dir auch vorstellen, das Grid an die Datasource zu hängen und anstatt der Joins eine LookupComboBox zu verwenden? Das hatte ich zuerst - leider ist die Performance beim Gruppieren erschreckend langsam (teilweise über eine Minute bei Daten der Hauptquery 5000 Stück und LookupComboBox-Query ebenfalls ca 5000 Stück)...

Danke und liebe Grüsse
Peter

jensw_2000 14. Jun 2005 01:13

Re: ADO, Grid und SQL mit JOIN
 
Liste der Anhänge anzeigen (Anzahl: 1)
So,
hier wie versprochen ein Mini-Unbound Demo.
Ich hoffe es wird die offenen Fragen klären ...


Schöne Grüße,
Jens

TPeterT 14. Jun 2005 05:53

Re: ADO, Grid und SQL mit JOIN
 
Hallo!
Vielen Dak für das Demo!
Scheinbar war mein Code ok..
Aber: die exe aus deinem Demo hat perfekt funktioniert - dann habe ich das Projekt geöffnet - unter Optionen die Ausgabeverzeichnisse geändert - kompiliert - und wieder nur leere Zeilen im Grid. (Beim Starten des Projektes in D.: "cxg_type.SortIndex nicht gefunden" hab ich mal ignoriert ;-)..
eine wirklich komische Sache.. werd mal weiterprobieren und geb dann bescheid wenn ich was gefunden habe (so in 125 Jahren ;-))

Liebe Grüsse und noch einen schönen Tag
Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
Seite 2 von 2     12   

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