Datenbank: Firebird • Version: - • Zugriff über: Interbase
Firebird Datenbank - Sortierung
Hallo, ich versuche zur Zeit meine Datenbank zu sortieren, jedoch gelingt mir das nicht. Es tut sich nichts im DBGrid :/
Hier mein Ansatz:
Delphi-Quellcode:
procedure TMain.DBGrid1TitleClick(Column: TColumn);
var SortColumn: String; begin SortColumn:=DBGrid1.Columns.Items[Column.Index].FieldName; Main.IBQuery1.Close; Main.IBQuery1.SQL.Clear; Main.IBQuery1.SQL.Text:='SELECT * FROM TABLE ORDER BY ' + SortColumn; Main.IBQuery1.Open; Main.IBTable1.Transaction.Commit; Main.IBTable1.Active:=True; end; |
AW: Firebird Datenbank - Sortierung
Was heisst "es tut sich nichts"?. Werden keine Daten angezeigt, werden die daten unsortiert angezeigt, gibt es eine Fehlermeldung?
|
AW: Firebird Datenbank - Sortierung
Nein es gibt keine Fehlermeldung. Es scheint als würden die Daten garnicht bearbeitet werden - Wie soll man das beschreiben, es "flimmert" einmal... Die Daten selber sind unverändert !
|
AW: Firebird Datenbank - Sortierung
Was zeigst Du in deienm Grid an?
Das Ergebnis deiner Query oder Deine Table? Gruss wo |
AW: Firebird Datenbank - Sortierung
Mein Table!
|
AW: Firebird Datenbank - Sortierung
Aber die Table wird mit dem SQL Befehl doch nicht sortiert, sondern nur das Ergebnis der Query ist sortiert.
|
AW: Firebird Datenbank - Sortierung
Überschreibt sich der Table nicht automatisch mit dem Ergebnis des Querys? Hm also muss ich den Table neu schreiben, richtig ?
|
AW: Firebird Datenbank - Sortierung
Du musst Datasource.Dataset der Grid auf die Query setzen.
|
AW: Firebird Datenbank - Sortierung
Hm macht Sinn jedoch bekomm ich mit folgender Zeile diese Fehlermeldung:
"Zirkuläre Datenverbindungen nicht erlaubt."
Code:
Habe versucht vorher mit .Close das DataSet zu schließen aber das hat auch nichts gebracht...
Main.DBGrid1.DataSource.DataSet:=IBQuery1;
|
AW: Firebird Datenbank - Sortierung
Dann hast Du vermutlich beim Query die Datasource-Eigenschaft belegt. Lass die einfach leer.
|
AW: Firebird Datenbank - Sortierung
Zitat:
Nur wenn Du die Datensätze holst (Query), kannst über die Orderklausel der Query die Reihenfolge bestimmen, in der die Datensätze geliefert werden. Wenn eine Sortierung öfters benötigt wird, ist es sinnvoll, in der Datenbank für die entsprechende Spalte (oder die Spalten) einen Index zu definieren (Create index...). Damit wird das Holen in der gewünschten Reihenfolge beschleunigt, aber die Originaltabelle bleibt immer unsortiert. |
AW: Firebird Datenbank - Sortierung
Stimmt das wars DeddyH, danke ;)
|
AW: Firebird Datenbank - Sortierung
Okay soweit so gut. Nun hat sich aber ein weiteres Problem ergeben.
Nachdem das DBGrid sortiert gefüllt ist muss ich den Query wieder vom DataSet trennen. Ansonsten zerstören spätere Anfragen (z.B COUNT()) mein Datensatz im DBGrid (DBGrid füllt sich mit dem Ergebnis von Count()). Eine Möglichkeit wäre wieder IBTable mit dem DataSet zu verlinken aber dann habe ich wieder die unsortieren Daten im DBGrid. Wie geht man nun vor ? Schreibt man den Table mit den sortierten Daten neu ? |
AW: Firebird Datenbank - Sortierung
Zitat:
Sortiert bekommst Du die Daten prinzipiell nur als Ergebnis einer Query. Solange Du das Grid brauchst, würde ich diese Query ausschliesslich für das Grid und für andere Abfragen eine andeer Query-Variable verwenden. |
AW: Firebird Datenbank - Sortierung
Oder verwendet DataSets, die man vom Server trennen kann und welche dann den Inhalt cachen
|
AW: Firebird Datenbank - Sortierung
Okay idefix2 das war auch mein erster Gedanke. Dachte nur das wäre unsauber :)
|
AW: Firebird Datenbank - Sortierung
Warum sollte das unsauber sein?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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