Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten aufsteigend sortieren (https://www.delphipraxis.net/119778-daten-aufsteigend-sortieren.html)

Thomm 31. Aug 2008 16:39

Datenbank: MyBase • Zugriff über: Clientdataset

Daten aufsteigend sortieren
 
Ich wollte die Daten in meiner Datenbank aufsteigend sortieren.

Das Feld heißt 'Abfahrtszeit' und umfasst Datum und Uhrzeit (z.B. 12.08.2007 19:57:45)

Delphi-Quellcode:
procedure TForm1.Oeffnen1Click(Sender: TObject);
begin
Clientdataset1.IndexDefs.Add('IDAbfahrtszeit', 'Abfahrtszeit', [ixCaseInsensitive]) ;
.
.
.
.

end;;
Was ist daran falsch ?

grenzgaenger 31. Aug 2008 16:55

Re: Daten aufsteigend sortieren
 
die anordnung der daten in der db ist sache der db und nicht beinflussbar.

was du machen kannst, ist die ausgabe entsprechend deinen wünschen zu sortieren.

eddy 31. Aug 2008 16:57

Re: Daten aufsteigend sortieren
 
Hallo Thomm,

probier's damit:

Delphi-Quellcode:
Clientdataset1.IndexDefs.Add('IDAbfahrtszeit', 'Abfahrtszeit', [ixCaseInsensitive, ixDescending]);
mfg
eddy

Thomm 31. Aug 2008 17:05

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von eddy
Hallo Thomm,

probier's damit:

Delphi-Quellcode:
Clientdataset1.IndexDefs.Add('IDAbfahrtszeit', 'Abfahrtszeit', [ixCaseInsensitive, ixDescending]);
mfg
eddy

Habs probiert, funktioniert nicht :?

grenzgaenger 31. Aug 2008 17:49

Re: Daten aufsteigend sortieren
 
<delete>

Thomm 31. Aug 2008 17:53

Re: Daten aufsteigend sortieren
 
Irgendwie muss man doch die Einträge sortieren können.

Gibts doch nicht.

Vielleicht hat DBGrid ne Eigenschaft zum Sortieren.

Chemiker 31. Aug 2008 18:05

Re: Daten aufsteigend sortieren
 
Hallo Thomm,

natürlich kann man die Einträge sortieren.



Delphi-Quellcode:
var
  IndexName: String;
begin
  IndexName:= 'KDNachName'+'Index';
  DM.KundeClientDataSet.AddIndex(IndexName, 'KDNachName',
                                                   [ixCaseInsensitive],'','',0);
  DM.KundeClientDataSet.IndexName:= IndexName;


Wenn Du die Spalten in einem DBGrid sortieren willst, kann man durch das Anklicken der Namen in der Spalten sortieren. Allerdings funktioniert die Sortierung nur absteigend.

Delphi-Quellcode:
procedure TfrmHauptFormular.KundenDBGridTitleClick(Column: TColumn);
begin
  try
    DM.KundeClientDataSet.IndexFieldNames := Column.FieldName;
  except
    ShowMessage('Das Feld kann nicht sortieren' + Column.FieldName);
end;

Bis bald Chemiker

Thomm 31. Aug 2008 18:25

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von Chemiker
Hallo Thomm,

natürlich kann man die Einträge sortieren.



Delphi-Quellcode:
var
  IndexName: String;
begin
  IndexName:= 'KDNachName'+'Index';
  DM.KundeClientDataSet.AddIndex(IndexName, 'KDNachName',
                                                   [ixCaseInsensitive],'','',0);
  DM.KundeClientDataSet.IndexName:= IndexName;
Bis bald Chemiker

Hallo Chemiker

Das funktioniert nicht ganz. :?

Sortiert zwar die Einträge, aber da diese Datumsformat [dd.mm.yyyy hh:mm:ss]
haben, sortiert er nur nach der ersten Ziffer, aber nicht nach dem Datum .

so z.B.

01.08.2008 17:45:55
02.09.2008 13:45:13
08.01.2007 12:55:12
10.04.2008 11:23:45

mkinzler 31. Aug 2008 18:32

Re: Daten aufsteigend sortieren
 
Was für einen Typ hat das Feld?

grenzgaenger 31. Aug 2008 18:34

Re: Daten aufsteigend sortieren
 
auch wenn ich mich wiederhole, eine SQL DB kennt keine sortierung auf satzebene, wie die DB die sätze abspeichert ist ausschliesslich der angelegenheit des DBMS.

ggf. kann es sein, dass sich das DBMS so verhält wie erwartet, das ist aber reiner zufall und muss nicht heissen, dass dies auch in 2 monaten noch so ist...

daher, sortiert man die ausgabe aus der DBMS.. hierzu wird i.a.R. der select .. order by ... zur verfügung gestellt.

alternativ kannst du auch per hand sortieren... :-)


d.h. wenn du deine daten nur visualisieren willst, nimm 'n tQuery statt 'n tTable ... und sag es via SQL wie du deine daten aufbereitet haben möchtest...

wenn du deine daten noch zusätzlich bearbeiten willst... (neue sätze einfügen, etc.) ist handarbeit angesagt...

grenzgaenger 31. Aug 2008 18:36

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von mkinzler
Was für einen Typ hat das Feld?

dachte er hätt auf double oder 'n datetime umgestellt?

mkinzler 31. Aug 2008 18:40

Re: Daten aufsteigend sortieren
 
Eine Sortierung nach der ersten Ziffer hört sich nicht nach Datumstyp an

Thomm 31. Aug 2008 18:40

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von mkinzler
Was für einen Typ hat das Feld?

Delphi-Quellcode:
ClientDataSet1Abfahrtszeit.AsDateTime := frac(datetimepicker3.time)+ trunc( datetimepicker1.date);
so werden sie in die DB eingetragen

mkinzler 31. Aug 2008 18:42

Re: Daten aufsteigend sortieren
 
Das heisst aber nicht das das Feld diesen Typ hat.

Chemiker 31. Aug 2008 18:46

Re: Daten aufsteigend sortieren
 
Hallo Thomm,

bei mir wird auch ein Datum richtig sortiert.

@grenzgaenger: Er hat ja keine richtig Datenbank. Und die Sortierung funktioniert so. Man muss allerdings auch anmerken das die Index-Erstellung nur temporär ist.

Bis bald Chemiker

Thomm 31. Aug 2008 18:56

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von mkinzler
Das heisst aber nicht das das Feld diesen Typ hat.

FieldKind = fkData

DataType = ftDateTime

Thomm 31. Aug 2008 19:02

Re: Daten aufsteigend sortieren
 
Ich hab den Fehler gefunden. :shock:

Bei dem Feld 'Abfahrtszeit' war statt TDateTime

Tstring als Feldtyp eingetragen.

Deswegen hat er nur nach der ersten Ziffer sortiert :cry:

Ich hab das geändert , jetzt funktioniert es.

DANKE

eddy 31. Aug 2008 22:34

Re: Daten aufsteigend sortieren
 
Hallo Thomm,

zumindest funktioniert es mit dBase-, Paradox- und ADS-Datenbanken.

Meine Tabelle (=DBGrid) soll nach einem Feld vom Type TDateTime so sortiert werden, daß der neueste Eintrag ganz oben steht.

Als SQL-Sortierung für eine (ADS-)Datenbank namens TERMIN wird damit nach dem Feld DATUM in austeigender oder absteigender (DESC) Reihenfolge sortiert.

Delphi-Quellcode:
select * from termin order by datum
select * from termin order by datum desc
Habe allerdings keine Erfahrung mit MyBase sowie dem von Dir definierten Zugriff über Clientdataset.

mfg
eddy

Thomm 1. Sep 2008 18:13

Re: Daten aufsteigend sortieren
 
Weiß vielleicht jemand , wie man die Anzahl der Einträge in die Datebank anzeigen kann ?

mkinzler 1. Sep 2008 18:19

Re: Daten aufsteigend sortieren
 
.RecordCount?

Thomm 1. Sep 2008 18:22

Re: Daten aufsteigend sortieren
 
Zitat:

Zitat von mkinzler
.RecordCount?

Nee, funktioniert nicht

Delphi-Quellcode:
Clientdataset1.RecordCount

Thomm 1. Sep 2008 18:29

Re: Daten aufsteigend sortieren
 
Stimmt.......funktioniert


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