Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid alle Datensätze makieren (https://www.delphipraxis.net/112439-dbgrid-alle-datensaetze-makieren.html)

Salomon 21. Apr 2008 13:55

Datenbank: MS SQL • Zugriff über: ADO

DBGrid alle Datensätze makieren
 
Hi,
kennt ihr einen perfomanten Code der mir alle Datensätze in einem DBGrid selektiert? Zur Zeit verwende ich den Code unten, der allerdings bei nur 2500 Datensätzen merklich Zeit braucht. Das muss doch auch schneller gehen...

Delphi-Quellcode:
  Screen.Cursor := crArrow;
  DM_ProjectPoint.QRY_All.DisableControls;
  DM_ProjectPoint.QRY_All.First;
  while not DM_ProjectPoint.QRY_All.Eof do
  begin
    DBGrid.SelectedRows.CurrentRowSelected := CheckBox1.Checked;
    DM_ProjectPoint.QRY_All.Next;
  end;
  DM_ProjectPoint.QRY_All.First;
  DM_ProjectPoint.QRY_All.EnableControls;
  Screen.Cursor := crDefault;
LG
Marcus

mkinzler 21. Apr 2008 16:22

Re: DBGrid alle Datensätze makieren
 
Vielleicht würde es reichen, primär nur sichtbare Datensätze zu markieren.
Es wäre vielleicht grundsätzlich über eine Limitierung nachzudenken.

Salomon 22. Apr 2008 08:17

Re: DBGrid alle Datensätze makieren
 
Hi mkinzler,
nur das makieren der sichtbaren Datensätze reich tleider nicht aus. Zum Glück kommt der Fall das das gesammte DbGrid makiert werden muss nicht so oft vor.
Da du eine Limitierung vorschlägst wird es wohl keine schnellere Variante geben ?!?

Gruß
Marcus

mkinzler 22. Apr 2008 08:19

Re: DBGrid alle Datensätze makieren
 
Keine mir bekannte

Peinhard 22. Apr 2008 08:45

Re: DBGrid alle Datensätze makieren
 
Wie wäre es mit einem Fake? Du zeichnest das Grid so, als ob alle markiert wären, und die abzuarbeitenden Datensätze hast du ja in der Query.

mkinzler 22. Apr 2008 08:51

Re: DBGrid alle Datensätze makieren
 
Würde ich nicht als fake bezeichnen, sondern als ernsthafte Alternative. man fetcht immer nur einen Ausschnitt, welcher etwas größer als der dargestellte ist und reagiert dann auf verschieben des Datensatzzeigers.

Peinhard 22. Apr 2008 09:00

Re: DBGrid alle Datensätze makieren
 
Ich meinte aber wirklich nur zeichnen, also Hintergund und Textfarbe in OnDrawColumnCell auf die bei der Markierung verwendeten setzen, nicht tatsächlich markieren. Als ernsthafte Alternative würde ich diesen 'Fake' dennoch bezeichnen. ;)

Salomon 22. Apr 2008 09:50

Re: DBGrid alle Datensätze makieren
 
@Peinhard: Die Idee ist gut, da der User auch einzelne Datensätze makieren kann, müsste ich prüfen ob gerade ob er gerade alles, oder nur eine Teilmenge haben will.

Peinhard 22. Apr 2008 09:54

Re: DBGrid alle Datensätze makieren
 
So ist es, das 'Interface' muss so gestaltet sein, dass du die Fälle unterscheiden kannst, und auch die 'weiterverarbeitenden' Routinen müssen entsprechend ergänzt werden.


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