![]() |
Sortieren im Clientdataset nach ID(autoinc)
Hallo ich möcht in meinem Clientdataset meine Datensätze nach der ID Nummer aufwärtz sortieren. Die Daten werden in einem DBGrid angezeigt.
Habe mal folgenden Code
Delphi-Quellcode:
Funktioniert aber nicht ???
var
IndexName: String; begin IndexName:= 'ID'+'0';//ID= Spaltenname 0= index ClientDataSet1.AddIndex(IndexName, 'ID',[ixDescending],'','',0); ClientDataSet1.IndexName:= IndexName; clientdataset1.First; end; |
AW: Sortieren im Clientdataset nach ID(autoinc)
Verwende IndexDefs und lies
![]() |
AW: Sortieren im Clientdataset nach ID(autoinc)
... oder trage in IndexFieldNames den Feldnamen ein, nach dem du sortieren möchtest.
|
AW: Sortieren im Clientdataset nach ID(autoinc)
Ich will ja nach dem id count der datensätze sortieren. clientdataset1.fieldbyname['ID'] und das ganze aufwärts.
ID Name Adresse 1 Max musterstrasse 2 Moritz Bleibträu 3 Mia ichhaumichweg .. .. .. Den Artikel habe ich mir schon angeschaut hat mir aber nicht weiter geholfen...... . |
AW: Sortieren im Clientdataset nach ID(autoinc)
Zitat:
|
AW: Sortieren im Clientdataset nach ID(autoinc)
@Union
Danke hast recht XDDD
Delphi-Quellcode:
function SortClientDataSet(ClientDataSet: TClientDataSet;
const FieldName: String): Boolean; var i: Integer; NewIndexName: String; IndexOptions: TIndexOptions; Field: TField; begin Result := False; Field := ClientDataSet.Fields.FindField(FieldName); //If invalid field name, exit. if Field = nil then Exit; //if invalid field type, exit. if (Field is TObjectField) or (Field is TBlobField) or (Field is TAggregateField) or (Field is TVariantField) or (Field is TBinaryField) then Exit; //Get IndexDefs and IndexName using RTTI //Ensure IndexDefs is up-to-date ClientDataSet.IndexDefs.Update; //If an ascending index is already in use, //switch to a descending index if ClientDataSet.IndexName = FieldName + '__IdxA' then begin NewIndexName := FieldName + '__IdxD'; IndexOptions := [ixDescending]; end else begin NewIndexName := FieldName + '__IdxA'; IndexOptions := []; end; //Look for existing index for i := 0 to Pred(ClientDataSet.IndexDefs.Count) do begin if ClientDataSet.IndexDefs[i].Name = NewIndexName then begin Result := True; Break end; //if end; // for //If existing index not found, create one if not Result then begin ClientDataSet.AddIndex(NewIndexName, FieldName, IndexOptions); Result := True; end; // if not //Set the index ClientDataSet.IndexName := NewIndexName; end; procedure TForm1.Button1Click(Sender: TObject); begin sortclientdataset(clientdataset1,'ID'); end; Danke das war es |
AW: Sortieren im Clientdataset nach ID(autoinc)
Zitat:
Nene, Perlsau hat schon gesagt, wie einfach das geht. Bei mir sieht das z. B. so aus :
Delphi-Quellcode:
Das ClientDataSet hat da eben mehrere Felder und sortiert wird in dem Fall nach NR. Vorher stehen halt noch die Felddefinitionen an der Stelle :
CDS.IndexFieldNames := 'NR';
Delphi-Quellcode:
CDS.FieldDefs.Add ('ID', ftInteger, 0, False);
CDS.FieldDefs.Add ('NR', ftInteger, 0, False); ... |
AW: Sortieren im Clientdataset nach ID(autoinc)
Habe eine Fehlermeldung wenn ich das Programm auf nen anderen Rechner starte
Exception Clientdataset1.Field'ID' not Found. Hier der Form Create Code
Delphi-Quellcode:
Und Form Show
procedure TForm1.FormCreate(Sender: TObject);
begin MediaPlayer1.Notify := true; Mediaplayer1.Play; clientdataset1.LoadFromFile('c:\programme\vereintool\daten\adressen.xml'); TWheelDBGrid(DBGrid1).OnMouseWheel := DBGridMouseWheel; FormatDateTime('dd.mm.yyyy', now); pagecontrol1.ActivePageIndex:=0; pagecontrol2.ActivePageIndex:=0; ForceDirectories('c:\Programme\Vereintool\Daten\Konten'); ForceDirectories('c:\Programme\Vereintool\Daten\Mitgliedsausweis'); ForceDirectories('c:\Programme\Vereintool\Daten\Schreiben'); ForceDirectories('c:\Programme\Vereintool\Daten\Kassenbuch'); ForceDirectories('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)); dbcomboBox1.Items.LoadFromFile('c:\Programme\Vereintool\Daten\abteilung.txt') ; dbcomboBox5.Items.LoadFromFile('c:\Programme\Vereintool\Daten\Funktion.txt') ; form1.eltreestringgrid1.Cells[0,0]:='01.01'+FormatDateTime('.yyyy', now); form1.eltreestringgrid1.Cells[4,0]:='0,00 €'; form1.eltreestringgrid1.Cells[6,0]:='Kassenstand vom 31.12. des Vorjahres'; if SysUtils.FileExists('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+'.xls') then if SysUtils.FileExists('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+' leer.xls')then DeleteFile('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+' leer.xls'); SaveAsExcelFile1(form1.eltreestringGrid1, 'Tabelle1', 'c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+' leer.xls'); Xls_To_StringGrid1(form1.ElTreeStringGrid1,'c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+'.xls'); self.ElTreeStringGrid1HeaderColumnClick(sender,0); end;
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin self.DBGrid1TitleClick(nil); sortclientdataset(Clientdataset1,'ID');// Hier soll das dataset sortiert werden clientdataset1.first; end; |
AW: Sortieren im Clientdataset nach ID(autoinc)
In welcher Zeile tritt denn der Fehler auf?
|
AW: Sortieren im Clientdataset nach ID(autoinc)
auf meinem rechner nicht nur auf dem Anderem auf dem ich kein delphi habe
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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 by Thomas Breitkreuz