Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sortierung der daten in datenbank (https://www.delphipraxis.net/14251-sortierung-der-daten-datenbank.html)

Fengi 5. Jan 2004 16:31


Sortierung der daten in datenbank
 
hallo.
ich habe eine datenbank (paradox___table1) mit den komponenten terminnummer, datum und uhrzeit.
wenn ich jetzt neue daten in die datenbank schreibe werden die nur hinten angefügt...
wie ist der quellcode das die daten nach datum und dann noch nach uhrzeit sortiert in meinem dbgrid1 ausgegeben werden?
:wiejetzt:

Jens Schumann 5. Jan 2004 16:34

Re: Sortierung der daten in datenbank
 
Hallo,

SELECT * FROM tabelle ORDER BY terminnummer DESC/ASC

mit DESC oder ASC kannst es entweder absteigend oder aufsteigend sortieren

Fengi 5. Jan 2004 18:14

Re: Sortierung der daten in datenbank
 
sorry aber ich werde aud deinem quelltext nicht schlau...
select erkennt der compiler nicht und außerdem will ich nach datum und dann nach uhrzeit sortieren und nicht nach terminnummern...
:?

Jens Schumann 5. Jan 2004 18:18

Re: Sortierung der daten in datenbank
 
Hallo,
ich habe die auch keinen Quelltext geschrieben.
Ich habe Dir das SQL Statement für die TQuery Komponente gegeben. Ich dachte, wenn Du
eine Datenbank verwendest würdest Du wissen was SELECT bedeutet.
Wenn Du nach Datum und dann nach Uhrzeit sortieren möchtest kannst Du folgenden
SQL-Ausdruck verwenden.


SELECT * FROM tabelle ORDER BY datum,uhrzeit

r_kerber 5. Jan 2004 18:18

Re: Sortierung der daten in datenbank
 
Das ist ja auch kein Delphi-Quelltext sonder ein SQL-Statement. Dafür brauchst Du eine TQuery-Komponente!

Fengi 5. Jan 2004 18:55

Re: Sortierung der daten in datenbank
 
ich arbeite aber nicht mit ner query...bin auch eher bei vcl...
entweder sitz ich jetzt schon zu lange vor dem rechner bzw. dem programm oder ich weiß auch nicht warum ich das hier nicht verstehe...
:wall:

Jens Schumann 5. Jan 2004 18:58

Re: Sortierung der daten in datenbank
 
Hallo Fengi,
TQuery ist VCL. In der Komponenenpalette auf dem Register Datenzugriff die dritte Komponente von links.
Zeige uns doch mal wie Du auf die Paradox Tabelle zugreifst.

Fengi 5. Jan 2004 19:05

Re: Sortierung der daten in datenbank
 
generell einfach:
Delphi-Quellcode:
table1.FieldByName('Datum').AsString:=datetostr(monthcalendar1.Date);
  table1.FieldByName('Beschreibung').AsString:=dbedit2.Text;
  table1.FieldByName('Uhrzeit').AsString:=edit1.Text;
und im dbgrid1
Delphi-Quellcode:
table1.Open;
  monthcalendar1.Date:=date;
  //nur anzeigen der Datenbankkomponenten Datum,Uhrzeit und Beschreibung
  dbgrid1.Columns.Clear;
  i:=0;
  dbgrid1.Columns.Add;
  dbGrid1.Columns.Items[i].FieldName:='Datum';
  dbgrid1.Columns.Items[i].Width:=50;
  inc(i);
  dbgrid1.Columns.Add;
  dbGrid1.Columns.Items[i].FieldName:='Uhrzeit';
  dbgrid1.Columns.Items[i].Width:=50;
  inc(i);
  dbgrid1.Columns.Add;
  dbGrid1.Columns.Items[i].FieldName:='Beschreibung';
  dbgrid1.Columns.Items[i].Width:=30

Jens Schumann 5. Jan 2004 19:21

Re: Sortierung der daten in datenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe Dir ein kleines Beispiel angehängt.
Ich habe dafür keine einzige Zeile Code geschrieben.
Alles über den Objektinspektor zusammengeklickt.

Das Beispiel greift über den Alias DBDEMOS auf die country.db Tabelle zu.
Über: SELECT * FROM country ORDER BY area DESC
werden die Datensätze nach dem Inhalt der Spalte area aufsteigend sortiert.
(Achtung: Bei DBase ist nicht area sondern eine 0 anzugeben)

Damit im Grid nicht alle Spalten angezeigt werden habe ich im Objektinspektor die
Colmuns Eigenschaft des TDBGird entsprechend angepasst.

Fengi 6. Jan 2004 12:49

Re: Sortierung der daten in datenbank
 
sorry.
nicht das du denkst ich will dich an der nase rumführen.aber ich versteh nicht wie du das meinst...
die daten die du mir geschickt hast sind auch nicht sortiert oder?
ich kapier das jedenfalls leider nicht. :(

Jens Schumann 6. Jan 2004 13:30

Re: Sortierung der daten in datenbank
 
Stimmt. Du hast recht. Die Daten sind nicht sortiert.
Da war ich etwas zu schnell.
In der SQL Eigenschaft von TQuery muss ja auch SELECT * FROM country ORDER BY area DESC stehen

Minz 6. Jan 2004 13:34

Re: Sortierung der daten in datenbank
 
wenn du z.B. nach datum sortieren willst brauchst du blos einen Index einzuführen. Diesen vergibst du in der Datenbankoberfläche. Du musst dafür nichts programmieren.

Es handelt sich dann um einen Sekundärindex, dem du das Datumsfeld hinzufügst.

eddy 6. Jan 2004 23:33

Re: Sortierung der daten in datenbank
 
Hallo Fengi,

Index auf Datum legen, also Tabelle nicht sortieren sondern nur indizieren (geht schneller):

Code:
procedure TFTermin.Indexneuaufbauen1Click(Sender: TObject);
begin
  Tab1.Close;
  Tab1.Exclusive := true;
  Tab1.Open;
  Tab1.IndexDefs.Clear;
  Tab1.IndexDefs.Update;
  Tab1.AddIndex('','ID', [ixPrimary]); // ID vom Typ ftAutoInc evtl. Deine Terminnummer
  Tab1.IndexDefs.Update;
  Tab1.AddIndex('Datum', 'Datum;Zeit', [ixCaseInsensitive]); // Datum; Uhrzeit
  Tab1.IndexDefs.Update;
  Tab1.AddIndex('Such', 'Such', [ixCaseInsensitive]); // Beschreibung
  Tab1.IndexDefs.Update;
  Tab1.Close;
  Tab1.Exclusive := false;
  Tab1.Open;
end;
Du mußt natürlich Deine Feldbezeichner verwenden. Falls Du kein Feld ID für den PrimärIndex hast, ergänze Deine DB (ID muß 1. Feld in der Liste sein) oder denk' Dir ein anderes Feld als Primärindex aus.

Anwendung:

Code:

const
  ixDatum = 'Datum';

procedure TFTermin.FormActivate(Sender: TObject);
begin
  ....
  UP_DBActiv(Tab1,SessN,DataPath,fnTermin); // Termin-DB öffnen
  try
    Tab1.IndexName := ixDatum;
  except
    Indexneuaufbauen1.Click;
    Tab1.IndexName := ixDatum;
  end;
  ....
mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 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