Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Spalten im DBGrid sortieren OHNE ADO (https://www.delphipraxis.net/127402-spalten-im-dbgrid-sortieren-ohne-ado.html)

BackOrifice 12. Jan 2009 20:34

Datenbank: MS SQL Server • Version: 2000 • Zugriff über: dbExpress

Spalten im DBGrid sortieren OHNE ADO
 
Hi.

Ich habe ein DBGrid, welches per TDataSource auf ein SimpleDataSet zugreift. Ich will den Inhalt nach Spalten sortieren. Ich will NICHT ADO benutzen. Füge ich den CommandText im DataSet mit ORDER BY ein, ändert das leider nichts an der Anzeige. Die Daten werden IMMER aufsteigend angezeigt.

Wie krieg ich das DBGrid zu einer sortierten Anzeige?


Vielen Dank.

Bernhard Geyer 12. Jan 2009 21:09

Re: Spalten im DBGrid sortieren OHNE ADO
 
Ich denke nicht das das DBGrid solch ein feature besitzt. Hier wäre entsprechende enhanced Grids nötig oder ein MemoryTable-Komponente.

BackOrifice 12. Jan 2009 22:36

Re: Spalten im DBGrid sortieren OHNE ADO
 
Mh, das ist ja echt übel.

Mich nervt es, dass anscheinend das DataSet die Ergebnismenge wieder sortiert. Wenn ich in die SQL Abfrage ein ORDER BY xy DESC/ASC beigebe, juckt das den nicht die Bohne.

omata 12. Jan 2009 22:46

Re: Spalten im DBGrid sortieren OHNE ADO
 
Ich habe das gerade mal ausprobiert, das Sortieren mit einem SimpleDataSet funktioniert wunderbar. Aufsteigend genauso gut wie absteigend. Dabei ist es auch egal, ob die Spalte, nach der sortiert wird im SELECT enthalten ist oder nicht.

Keine Ahnung, was bei dir da nicht geht.

BackOrifice 13. Jan 2009 00:23

Re: Spalten im DBGrid sortieren OHNE ADO
 
Du sortierst über SQL? Also hast in dem SQL Statement ORDER BY xy DESC/ASC? Oder wie sortierst du?
Bei mir geht es mit ORDER BY definitiv nicht.

PS: PTLer? FHler oder Freiberuflich? ;)

alzaimar 13. Jan 2009 07:55

Re: Spalten im DBGrid sortieren OHNE ADO
 
Zitat:

Zitat von BackOrifice
Bei mir geht es mit ORDER BY definitiv nicht.

Hast Du einen 'IndexFieldName' gesetzt? DAS ist nämlich das Sortierkriterium. Du könntest also beim Klick auf ein TDBColumn einfach diese Eigenschaft setzen.

mschaefer 13. Jan 2009 08:58

Re: Spalten im DBGrid sortieren OHNE ADO
 
Moin, moin, lasst uns das Ding mal sortieren:



a: DBGrid mit Query und SQL-Abfrage
----------------------------------------------------------------------------------------
Hier geht prinzipbedingt nur die Sortierung über ORDER BY ernsthaft korrekt.

-Hintergrund -
liegt darin, dass der DataSet nicht alle Datensätze einliest. Wenn man im DBGrid bei
größeren Datenmengen scrollt, dann wird nachgeladen. Wenn ich nur den DataSet mit
aktuellem Inhalt sortiere, dann gibt es beim Scrollen Durcheinander, da unosrtierte
Records kommen. Wie "alzaimar" schon angemerkt hat, sollte man in dieser Variante Indexnamen
möglichst nicht im DataSet (Query/DBGrid) angeben, sonst geht das erst recht schief.
----------------------------------------------------------------------------------------


a: DBGrid mit TTable und Indexfeld
----------------------------------------------------------------------------------------
Hier geht prinzipbedingt die Sortierung über das Indexfeld der TTable korrekt.

-Hintergrund -
Auch hier lädt der DataSet Datensätze bei Bedarf (bei Scrollen) nach. Die Sortierung
erfolgt dann über die Angabe in der TTable. Ist die gleich mit der Datenbanksortierung
wird die Datenmenge einfach zum DBGrid durchgereicht. Ansonsten wird sie intern umsortiert,
was sich übrigens in temporären Dateien bemerkbar macht.
----------------------------------------------------------------------------------------


Grüße in die Runde // Martin

BackOrifice 13. Jan 2009 17:26

Re: Spalten im DBGrid sortieren OHNE ADO
 
Vielen Dank für eure Mühe.


Aber der Fehler lag in der Abfrage selbst. Mein CommandText sah ca. so aus:
SQL-Code:
SELECT t.anfang, t.ende. ti.titel. ti.inhalt
FROM termin t, termin_inhalt ti
WHERE t.inhalt_id = ti.inhalt_id
ORDER BY t.anfang desc;
Kaum zu glauben: Aber das ';' am Ende der Abfrage ist der Fehler. Ohne dem Semikolon funktioniert die Sortierung.

HolzFreak 30. Jan 2011 16:36

AW: Spalten im DBGrid sortieren OHNE ADO
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo

Es gibt eine TDBSortGrid - Komponente, aber die ist nur kommerziell erhältlich. Kostet so um die CHF 50.-
Anbei ein Screenshot der Version. Habe leider nur eine dcu, aber keinen Quellcode.

Gruss

Holzfreak

mkinzler 30. Jan 2011 16:39

AW: Spalten im DBGrid sortieren OHNE ADO
 
Zitat:

Kaum zu glauben: Aber das ';' am Ende der Abfrage ist der Fehler. Ohne dem Semikolon funktioniert die Sortierung.
Komisch, denn eigentlich gehört es laut Standard auf jedenfall hin, auch wenn es bei den meisten DBMS auch ohne funktioniert


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz