Entwickler-Ecke

Datenbanken - DBGrid sortieren


fcg - Sa 09.11.02 10:42
Titel: DBGrid sortieren
halöle,

ich hoffe ihr könnt mir hierbek helfen. ich möchte ein DBGrid (oder gleich die table, db, paradox7) sortieren, wie man das im windows explorer auch machen kann. leider habe ich davon keine ahnung. wie kann i sowas machen?

<thanks>


LCS - Sa 09.11.02 12:34

Hi
du kannst das DBGrid selbst überhaupt nicht sortieren. Das einzige was du sortieren kannst, sind die Daten deiner Tabelle.
Wenn du über eine TTable Komponente zugreifst, kannst du die Sortierung durch die Verwendung eines anderen Index ändern. Diesen Sekundärindex musst du allerdings vorher für deine Tabelle erstellt haben (mit der Datenbankoberfläche).
Flexibler wird das Ganze wenn du anstelle von TTable eine TQuery zum Anzeigen der Daten verwendest. Dort werden die Daten auf der Basis eines SQL-Statements bereitgestellt und da kannst du nach jedem beliebigen Feld sortieren. Etwa so:

Quelltext
1:
SELECT * from MeineTabelle ORDER BY MeinTabellenfeld                    

Allerdings hast du bei TQuery dafür an einigen anderen Stellen Einschränkungen. So können die Daten i. d. R. nur dann geändert werden, wenn keine Sortierung oder Sortierung nach dem Primärindex angewendet wird.

Gruss Lothar


fcg - Sa 16.11.02 19:59

ich bin noch ein totaler anfänger in sachen datenbank. (ich arbeite mit table komponenten) kannst du vielleicht mal ein beispiel posten?

<thanks>


LCS - Mo 18.11.02 12:10

Hi
nimm doch einfach mal eine Tabelle, öffne sie mit der Datebankoberfläche und erstelle ein oder zwei zusätzliche Sekundärindizes. Wenn du eine Adresstabelle hast, würde sich ein Index für Name und einer für Wohnort anbieten.
Dann stellst du die Tabelle in einem DBGrid dar und schaust was passiert, wenn du die Eigenschaft IndexName der Tabelle änderst. Die Sortierung der Tabelle ändert sich. Der nächste Schritt wäre dann, das Programmgesteuert zu machen.

Probiers einfach mal aus. Das ist nicht schwer zu durchschauen. Passendes Beispiel dazu hab ich leider grad keines da.

Gruss Lothar