Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Datenbank - Sortierung (https://www.delphipraxis.net/152404-firebird-datenbank-sortierung.html)

-187- 21. Jun 2010 16:44

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;

idefix2 21. Jun 2010 17:12

AW: Firebird Datenbank - Sortierung
 
Was heisst "es tut sich nichts"?. Werden keine Daten angezeigt, werden die daten unsortiert angezeigt, gibt es eine Fehlermeldung?

-187- 21. Jun 2010 17:17

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 !

WoGe 21. Jun 2010 17:23

AW: Firebird Datenbank - Sortierung
 
Was zeigst Du in deienm Grid an?
Das Ergebnis deiner Query oder Deine Table?

Gruss
wo

-187- 21. Jun 2010 17:35

AW: Firebird Datenbank - Sortierung
 
Mein Table!

idefix2 21. Jun 2010 17:56

AW: Firebird Datenbank - Sortierung
 
Aber die Table wird mit dem SQL Befehl doch nicht sortiert, sondern nur das Ergebnis der Query ist sortiert.

-187- 21. Jun 2010 18:47

AW: Firebird Datenbank - Sortierung
 
Überschreibt sich der Table nicht automatisch mit dem Ergebnis des Querys? Hm also muss ich den Table neu schreiben, richtig ?

DeddyH 21. Jun 2010 18:52

AW: Firebird Datenbank - Sortierung
 
Du musst Datasource.Dataset der Grid auf die Query setzen.

-187- 21. Jun 2010 19:09

AW: Firebird Datenbank - Sortierung
 
Hm macht Sinn jedoch bekomm ich mit folgender Zeile diese Fehlermeldung:

"Zirkuläre Datenverbindungen nicht erlaubt."

Code:
Main.DBGrid1.DataSource.DataSet:=IBQuery1;
Habe versucht vorher mit .Close das DataSet zu schließen aber das hat auch nichts gebracht...

DeddyH 21. Jun 2010 19:12

AW: Firebird Datenbank - Sortierung
 
Dann hast Du vermutlich beim Query die Datasource-Eigenschaft belegt. Lass die einfach leer.

idefix2 21. Jun 2010 20:09

AW: Firebird Datenbank - Sortierung
 
Zitat:

also muss ich den Table neu schreiben
In einem relationalen Datenbanksystem gibt es keine "sortierten" Tabellen. Die Reihenfolge der Datensätze ist prinzipiell nicht defniert.

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.

-187- 21. Jun 2010 21:42

AW: Firebird Datenbank - Sortierung
 
Stimmt das wars DeddyH, danke ;)

-187- 21. Jun 2010 22:52

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 ?

idefix2 21. Jun 2010 23:19

AW: Firebird Datenbank - Sortierung
 
Zitat:

Schreibt man den Table mit den sortierten Daten neu ?
Lies noch einmal mein Post #11.

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.

mkinzler 22. Jun 2010 05:27

AW: Firebird Datenbank - Sortierung
 
Oder verwendet DataSets, die man vom Server trennen kann und welche dann den Inhalt cachen

-187- 22. Jun 2010 05:29

AW: Firebird Datenbank - Sortierung
 
Okay idefix2 das war auch mein erster Gedanke. Dachte nur das wäre unsauber :)

mkinzler 22. Jun 2010 05:34

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