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/)
-   -   Richtext lädt langsam in Tabelle (https://www.delphipraxis.net/201542-richtext-laedt-langsam-tabelle.html)

oakley 30. Jul 2019 19:51

Richtext lädt langsam in Tabelle
 
Hallo zusammen,

ich lade via UniDac einen Richtext aus einer MariaDB Tabelle in die Spalte eines cxGrids von DevExpress. Je mehr ich lade desto langsamer wird es.
Bei 8-10 Datzsätzen ist es noch erträglich aber irgendwann wird es unerträglich langsam.

Wenn ich an Stelle des Richtext Plaintext, lade geht es wesentlich schneller und wird am Ende des Ladevorgangs der Datesätze auch nicht langsamer.

Codeechnisch benutze ich nichts besonderes:
Normale SQL Abfrage:
Code:
"SELECT * from testtable" .
Zum Laden der Datensätze:
Code:
while not MFORM.UniQuery1.EOF do
begin
  TESTGRIDVIEW.DataController.AppendRecord;
  TESTGRIDVIEW.DataController.Values[TESTGRIDVIEW.DataController.RecordCount-1, TESTCOL.Index] := MFORM.UniQuery1.FieldByName('RTF_TEXT').AsString;
  UniQuery1.Next;
end;
Weiß jemand woran das liegen könnte?

LG

Mirko

hoika 30. Jul 2019 20:00

AW: Richtext lädt langsam in Tabelle
 
Hallo,
wahrscheinlich wird der Eintrag im Grid sofort gerendert.
Gibt es da was wie BeginUpdate/EndUpdate?

oakley 30. Jul 2019 21:04

AW: Richtext lädt langsam in Tabelle
 
Ja gibt es. Ich probiere es mal aus.
Danke für den Hinweis.

LG

Mirko

haentschman 31. Jul 2019 06:30

AW: Richtext lädt langsam in Tabelle
 
Moin... 8-)
Delphi-Quellcode:
while not MFORM.UniQuery1.EOF do
begin
  TESTGRIDVIEW.DataController.AppendRecord;
  TESTGRIDVIEW.DataController.Values[TESTGRIDVIEW.DataController.RecordCount-1, TESTCOL.Index] := MFORM.UniQuery1.FieldByName('RTF_TEXT').AsString;
  UniQuery1.Next;
end;
...diesen Part verstehe ich nicht. Was soll das mit der Schleife? ...Und AppendRecord? An das DevExpress Grid hängst du nur die Query...fertsch :gruebel:

PS: Das BeginUpdate/EndUpdate ist wichtig...

hoika 31. Jul 2019 06:34

AW: Richtext lädt langsam in Tabelle
 
Hallo,
Zitat:

Was soll das mit der Schleife?
er baut das Grid doch somit auf.

Was mir aber noch aufgefallen ist:
MFORM.UniQuery1.EOF
UniQuery1.Next;

also mal mit und ohne Form-Variable.
Ich würde die beim EOF auch weglassen.

haentschman 31. Jul 2019 06:37

AW: Richtext lädt langsam in Tabelle
 
Zitat:

er baut das Grid doch somit auf.
Das macht das Grid von alleine. 8-)
:zwinker: Daten lesen aus der DB, Query dem Grid zuordnen. Fertig! ...KEINE Schleife und KEIN AppendRecord!

Neutral General 31. Jul 2019 09:17

AW: Richtext lädt langsam in Tabelle
 
Schau dir mal in der Datenbank den rohen RTF Text an. Wir hatten schon mal das Problem dass wir 4MB RTF in der DB hatten für 5 Wörter Text, weil die RTF Komponente bei jedem Laden/Speichern neue RTF Steuerzeichen eingefügt hat. Und dadurch hat es ewig gedauert manche Datensätze zu laden.

oakley 2. Aug 2019 16:52

AW: Richtext lädt langsam in Tabelle
 
Danke für eure Hilfe... es war BeginUpdate bzw EndUpdate.
Das brachte den erhollften Speed :)

LG

Mirko


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