Einzelnen Beitrag anzeigen

MarkusT

Registriert seit: 11. Nov 2003
4 Beiträge
 
Delphi 7 Architect
 
#2

Re: ClientDataSet und Indexdefs

  Alt 26. Feb 2004, 10:16
Konnte das Problem lösen. Der Indexname war zu lang!
Für all diejenigen, die Interesse an der Lösung haben, hier der Quellcode.

Gruß Markus
Delphi-Quellcode:
procedure TDM_Datenbanken.SetSuchergebnisSortierung(
  const IndexFelder: string; const Aufsteigend: boolean);
var
  IndexName: string;
  MaxIdx,
    i: integer;
begin
  IBQuery_Suche_Vertragsdaten.IndexDefs.Update;
  { Fesstellen ob bereits ein Index mit den aktuellen Feldern existiert } 
  for I := 0 to Pred(IBQuery_Suche_Vertragsdaten.IndexDefs.Count) do
    if (IBQuery_Suche_Vertragsdaten.IndexDefs.Items[I].Fields = IndexFelder) then
      begin
        if (not Aufsteigend) and (ixDescending in IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Options) then
          begin
            { Diesen Index als aktuellen Index der Tabelle aktivieren } 
            IBQuery_Suche_Vertragsdaten.IndexName := IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Name;
            exit;
          end;
        if (Aufsteigend) and (not (ixDescending in IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Options)) then
          begin
            { Diesen Index als aktuellen Index der Tabelle aktivieren } 
          IBQuery_Suche_Vertragsdaten.IndexName := IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Name;
            exit;
          end;
      end;
  { Neuen Namen finden } 
  MaxIdx := 0;
  for i := 0 to Pred(IBQuery_Suche_Vertragsdaten.IndexDefs.Count) do
    if Copy(IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Name, 1, 4) = 'AUT_then
      MaxIdx := StrToInt(Copy(IBQuery_Suche_Vertragsdaten.IndexDefs.Items[i].Name, 5, 3));
  Inc(MaxIdx);
  IndexName := 'AUT_' + IntToStr(MaxIdx);
  if Aufsteigend then
    IBQuery_Suche_Vertragsdaten.IndexDefs.Add(IndexName, IndexFelder, [ixCaseInsensitive])
  else
    IBQuery_Suche_Vertragsdaten.IndexDefs.Add(IndexName, IndexFelder, [ixCaseInsensitive,
      ixDescending]);
  IBQuery_Suche_Vertragsdaten.IndexName := IndexName;
end;
  Mit Zitat antworten Zitat