![]() |
DB nach Spalte sortieren (Index oder SQL?)
Hallo,
ich hab' eine kleine DBase Datenbank, die ich über ein DBGrid anzeigen lasse. TTable --> TDataSource -> TDBGrid. Nun möchte ich die Tabelle nach bestimmten Spalten sortieren. Biem Programmstart ist sie nach Spalte X sortiert, ich will aber auf Knopfdruck nach Spalte Y oder Z sortieren. Wie bekomm ich das hin? Ich hab jetzt schon einige Beispiele gelesen mit
Code:
, aber damit kann ich absolut nix anfangen.
SQL ( SELECT * FROM Tabellenname ORDER BY Spaltenname)
Oder die zweite Möglichkeit, die ich anscheinend hab mit
Code:
, wobei Indexname irgendwie auf den Spaltennamen verweisen muss (keine Ahnung wie..)
Table1.IndexName := IndexName;
Also: Kann mir jemand sagen, wie ich das Sortieren hinbekomme, entweder mit SQL oder mit den Indexen...würde mich sehr freuen. Ciao :) |
Re: DB nach Spalte sortieren (Index oder SQL?)
Moin Jetro,
Wenn du von Table auf Query wechselst, kannst du das mal versuchen.( im OnTitleClick-Event des Grids)
Delphi-Quellcode:
[Edit] "SelectStr" sol dein Select-Statement bis vor die "ORDER BY"-Clause enthalten[/Edit]
TQuery(Column.Grid.DataSource.DataSet).SQL.Text :=
SelectStr +#10+ 'ORDER BY ' + IntToStr(succ(Column.Index)); Ich weiß jetzt aber nicht, ob TTable auch eine SQL-property hat. Ich kenne mich aber mit dem BDE/ADO - zeugs nicht so aus p.s.: Wenn das die BDE kompos sind, dann nehme lieber ADO (BDE wird hier in der DP öfters als schlechter beschrieben) |
Re: DB nach Spalte sortieren (Index oder SQL?)
Hallo Jetro223,
erst einmal herzlich willkommen in der Delphi-Praxis. Wie GeorgeWNewbie schon sagte, empfiehlt sich die Verwendung einer Query:
Delphi-Quellcode:
Die Zeichenkette im ersten Add kannst Du auch in eine String-Variable legen.
Query1.Close;
Query1.SQL.Clear; Query1.SQL.Add ('SELECT * FROM tabelle'); Query1.SQL.Add ('ORDER BY ' + Column.FieldName); Query1.Open; @GeorgeWNewbie: Bei TTable gibt es keine Eigenschaft SQL. Die BDE ist nicht unbedingt schlecht, sie wird nur von Borland nicht mehr weiterentwickelt. Und ADO macht eigentlich nur Sinn, wenn man auf Access, MS SQL-Server und eventuell auf Oracle zugreifen will. Für alle anderen DB's muß man sich die (teilweise kostenpflichten) ADO-Treiber besorgen. Borland selbst empfiehlt DBExpress. |
Re: DB nach Spalte sortieren (Index oder SQL?)
Hallo nochmal und danke erstmal :)
Diese Möglichkeit hab ich auch schon einige Male gelesen. Aber wie genau verbind ich damit mein DBGrid und die DataSource... Wahrscheinlich fehlen mir nur noch die richtigen Verknüpfungen zwischen den Komponenten um es zum laufen zu bringen. Wäre echt genial, wenn mir die noch jemand aufschreiben könnte :) Ciao :) |
Re: DB nach Spalte sortieren (Index oder SQL?)
Hai Jetro223,
bei deiner DataSource stellst Du im OI bei DataSet dein Query1 ein. In deinem DBGrid stellst Du dann unter DataSource deine DataSource1 ein. Das Query muss natürlich mit einer Connection verbunden sein. |
Re: DB nach Spalte sortieren (Index oder SQL?)
Hmm, irgendwie schein ich zu blöd zu sein :) Ich kapiers nicht.
Also ich hab jetzt je einmal TQuery TTable --> hier verweis ich normalerweise bei Table1.TableName auf c:\blah.dbf, meine DBase Tabelle TDataSource --> hier kommt bei DataSet Table1 hin TDBGrid --> hier bei Datasource, DataSource1 Wie muss ich jetzt das TQuery in das Ganze einfügen, das mir trotzdem meine Daten im TDBGrid angezeigt werden, ich dann aber via SQL ordnen etc. kann. Ciao :) Edit: Oder beziehungsweise, was stell ich beim TQuery ein...denn dort gibt es nur DatabaseName, ich hab aber keine Aliase oder so Zeug :) Sorry, ihr merkts sicher schon, bin Anfänger in Richtung Datenbank :) |
Re: DB nach Spalte sortieren (Index oder SQL?)
Du brauchst noch eine TDataBase wenn ich mich nicht täuche.
Und dann anstelle der TTable die TQuery verwenden. |
Re: DB nach Spalte sortieren (Index oder SQL?)
Und wie mach ich das bei der TDatabase mit dem Databasename und wo ist da ne Verknüpfung zum Query...mist, im moment blick ich absolut nix...:(
Ciao :) |
Re: DB nach Spalte sortieren (Index oder SQL?)
Was hast Du denn für eine Delphi-Version? Eventuell ist es mit den ADO-Komponenten ja leichter zu lösen.
|
Re: DB nach Spalte sortieren (Index oder SQL?)
Ich hab Delphi 6 Enterprise. Kann ja nicht soooo schwer sein, einfach nach versch. Spalten zu ordnen :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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-2025 by Thomas Breitkreuz