AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fragen zu CDS.IndexDefs

Fragen zu CDS.IndexDefs

Ein Thema von hyype · begonnen am 11. Nov 2008
Antwort Antwort
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#1

Fragen zu CDS.IndexDefs

  Alt 11. Nov 2008, 10:14
Datenbank: SQL OLE DB • Zugriff über: ADO
hi Kollegen

Ich wollte eine procedure schreiben, die ein CDS sowohl aufsteigend als auch absteigend sortieren kann.
Dazu habe ich in diesem Forum Code gefunden und angepasst und es funktioniert auch einwandfrei.
Nun wollte ich aber die procedure weiter optimieren und habe einige Verständnisprobleme:

1.) Könnte mir jmd die Unterschiede zwischen
Delphi-Quellcode:
CDS.AddIndex
CDS.IndexFieldNames
// und
CDS.IndexDefs.Add
erläutern?
Ich benutze nun letzteres, aber habe ka, wieso eigentlich. ^^

2.)
CDS.IndexDefs.Update Die delphi-Hilfe sagt dazu folgendes:
"Update wird aufgerufen, wenn die Indizes einer Datenmenge geändert wurden." Also NACHDEM sie geändert wurden.
Im darunter angegebenen Beispiel wird dieser Befehl aber VOR einer Änderung der Indexmenge aufgerufen, nicht danach. Bin ich nu blöde oder die? ^^

3.)
Delphi-Quellcode:
CDS.IndexDefs.Clear;
CDS.IndexDefs.Update;
CDS.Active war dabei auf true gesetzt, wodurch laut Hilfe Update automatisch 2 Felder (DEFAULT_ORDER und CHANGEINDEX) erstellt.
Ich hatte vorher 3, die 2 komischen ^^ und eins von meiner ersten Sortierung. Mit Clear habe ich alle 3 gelöscht und dachte nun, nach Update lediglich die 2 komischen wieder zu kriegen. Aber weit gefehlt, das 3. war auch wieder da und schon meckert er rum von wegen doppelt gemoppelt und ich habe ka, wieso...

Vielen Dank für eure Erklärungen schonmal!

mfg

Frank

edit:
Vlei kurz zur Erklärung: ich habe die procedure soweit optimiert, dass sie genau so funktioniert, wie ich es möchte, nur auf dem Weg dahin bin ich bald blöde geworden und würde das nun sozusagen im Nachhinein mal verstehen:

Delphi-Quellcode:
procedure TForm2.cds_sort(feldbez:string);
var
  IndexName: String;
  i:integer;
  aufsteigend:boolean;
begin
  indexname:=feldbez+'_id';
  aufsteigend:=true;

  for i := 0 to datamodule3.clientdataset1.IndexDefs.Count-1 do
    if (datamodule3.clientdataset1.IndexDefs.Items[I].Fields = feldbez) then
      aufsteigend:=false;

  datamodule3.ClientDataSet1.active:=false;
  datamodule3.ClientDataSet1.IndexDefs.Clear;
  datamodule3.clientdataset1.IndexDefs.Update;

  if Aufsteigend then
    datamodule3.clientdataset1.IndexDefs.Add(IndexName, feldbez, [ixCaseInsensitive])
  else
    datamodule3.clientdataset1.IndexDefs.Add(IndexName, feldbez, [ixCaseInsensitive,
      ixDescending]);

  datamodule3.clientdataset1.IndexName := IndexName;

  datamodule3.ClientDataSet1.Active:=true;

end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:50 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