Thema: Delphi Indexfehler ??

Einzelnen Beitrag anzeigen

Fritz01

Registriert seit: 22. Mär 2006
Ort: Großenkneten
181 Beiträge
 
Delphi 7 Professional
 
#16

Re: Indexfehler ??

  Alt 2. Dez 2007, 15:47
@ raiguen,
danke für Deine Mithilfe, das hat sich aber in der Zwischenzeit erledigt.
Die Lösung sieht so aus, im Prinzip wie Dein Vorschlag:
Delphi-Quellcode:
procedure TfrmMain.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  with tTable do
  if TreeView.Selected.IsFirstNode then exit
  else
  begin // angclickte Tabelle öffnen und Daten in Grid zeigen
    SelectTable(TreeView.Selected.Text); // neuer TableName
    DisableControls;
    try
      if Active then Close; // active Table schließen
        IndexDelete(sIndexList); // procedure IndexDelete
        TableName := TreeView.Selected.Text; // neue Tabelle
        If TableName <> 'then Open;
    finally
      EnableControls;
    end;
    Label1.Caption:=TreeView.Selected.Text;
    IndexDefs.Update;
    StoreDefs := false; // neue Tabelle öffnen
    iRecordCount.Caption := IntToStr(tTable.RecordCount); // Datensätze zählen und anzeigen
  end;
end;
und die procedure IndexDelete:
Delphi-Quellcode:
 procedure TfrmMain.IndexDelete(sIndexList: Tstringlist);
var
  cnt : integer;
begin
  with tTable do
    for cnt := sIndexList.Count -1 downto 0 do begin //sIndexList
    DeleteIndex(sIndexList[cnt]); // index aus table (sIndexList[cnt])
    tTable.IndexDefs.Update; // indexdefinition aktualisieren
    IndexFieldNames := '';
    IndexName := '';
  end;
  tTable.StoreDefs := False; //speichern der definitionen verhindern
  sIndexList.Clear;
end;
Weiter habe ich hinzugefügt:
Delphi-Quellcode:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IndexDelete(sIndexList); // procedure IndexDelete
end;
So werden erstellte Indizies beim Beenden auch noch entfernt.
Ich denke das Thema ist damit beendet.
Nochmal danke für die Mithilfe und noch einen schönen Abend.
Fritz
Fritz
  Mit Zitat antworten Zitat