AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Sortieren im Clientdataset nach ID(autoinc)
Thema durchsuchen
Ansicht
Themen-Optionen

Sortieren im Clientdataset nach ID(autoinc)

Ein Thema von Natcree · begonnen am 14. Nov 2013 · letzter Beitrag vom 4. Mai 2024
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#1

Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 18:05
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:
var
   IndexName: String;
 begin
   IndexName:= 'ID'+'0';//ID= Spaltenname 0= index
   ClientDataSet1.AddIndex(IndexName, 'ID',[ixDescending],'','',0);
   ClientDataSet1.IndexName:= IndexName;
   clientdataset1.First;
 end;
Funktioniert aber nicht ???
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 18:23
Verwende IndexDefs und lies diesen Artikel.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 20:03
... oder trage in IndexFieldNames den Feldnamen ein, nach dem du sortieren möchtest.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 22:03
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...... .
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 22:15
Den Artikel habe ich mir schon angeschaut hat mir aber nicht weiter geholfen...... .
Woran liegts? Dort ist genau das beschrieben was Du suchst. Auch noch mit Beispielsource.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 14. Nov 2013, 23:13
@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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 15. Nov 2013, 13:05
Danke das war es
Mit dem Source da? Ich liebe es, erst gar nichts von überhaupt zu wissen und dann mit 100 Zeilen abgekupfertem Quelltext zu kommen.

Nene, Perlsau hat schon gesagt, wie einfach das geht. Bei mir sieht das z. B. so aus :

CDS.IndexFieldNames := 'NR'; Das ClientDataSet hat da eben mehrere Felder und sortiert wird in dem Fall nach NR. Vorher stehen halt noch die Felddefinitionen an der Stelle :

Delphi-Quellcode:
CDS.FieldDefs.Add ('ID', ftInteger, 0, False);
CDS.FieldDefs.Add ('NR', ftInteger, 0, False);
...
Gruß
Hansa
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 9. Dez 2013, 16:37
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:
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;
Und Form Show

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
self.DBGrid1TitleClick(nil);
sortclientdataset(Clientdataset1,'ID');// Hier soll das dataset sortiert werden
clientdataset1.first;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 9. Dez 2013, 16:40
In welcher Zeile tritt denn der Fehler auf?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Sortieren im Clientdataset nach ID(autoinc)

  Alt 9. Dez 2013, 16:41
auf meinem rechner nicht nur auf dem Anderem auf dem ich kein delphi habe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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