Wann erscheint die Felhlermelung? Bei Überprüfen im GridTitleClick oder in der Löschroutine?
Wenn beim Erstellen des Indexes der Name mit PLZ angegeben wurde, dann sollte dieser auch als solcher zu finden sein
Ein evtl. bereits vorhandender Index auf das Feld PLZ mit einem anderen Namen (hier PLZ_idx) dürfte eigentlich nicht relevant sein bzw. 'Störungen' verursachen...
Noch ein, zwei kleine Änderung[en]:
Delphi-Quellcode:
procedure TForm1.GridTitleClick(Column: TColumn);
{... vorhandener Code}
//---- 2) Index nicht vorhanden
else
begin
Table.CLose;
Table.Exclusive := true;
Table.AddIndex(sName, sName,[]); // neuen Index einfügen
Table.IndexName := sName;
Table.Exclusive := False;
Table.Open;
ListBoxIndex.Items.Add(sName); // Index in Liste schreiben
///////---hinzufügen////////
//--internes Array mit den Indexdefinitionen aktualisieren
Table.IndexDefs.Update;
//--evtl. Speichern der Definitionen verhindern
Table.StoreDefs := false;
end;
end;
Delphi-Quellcode:
procedure TForm1.bIndexDeleteClick(Sender: TObject);
var
cnt : integer;
begin
for cnt := ListBoxIndex.Items.Count -1 downto 0 do
Table.DeleteIndex(ListBoxIndex.Items[cnt]); // neuen Index löschen
//--gesammte Listbox auf einen Schlag Löschen
ListBoxIndex.Items.Clear;
//--internes Array mit den Indexdefinitionen aktualisieren
Table.IndexDefs.Update;
//--evtl. Speichern der Definitionen verhindern
Table.StoreDefs := false;
end;
Zitat von
Delphi-OH:
Hinweis: Die in IndexDefs enthaltenen Definitionen berücksichtigen nicht immer die für die Tabelle verfügbaren Indizes. Rufen Sie vor der Überprüfung von IndexDefs die Methode Update auf, um die Liste zu aktualisieren.
Also von daher machen wir das
Zitat von
Delphi-OH:
Wenn FieldDefs oder IndexDefs aktualisiert oder manuell bearbeitet wird, wird StoreDefs auf True gesetzt. Setzen Sie StoreDefs auf False, um zu verhindern, dass bearbeitete (oder importierte) Definitionen gespeichert werden.
Wobei nicht eindeutig herauszulesen ist, wann und wo diese Einstellungen im DataModul oder Formular gespeichert werden
Aber es kann nicht schaden, es trotzdem auf false zu setzen, nach dem irgendwelche Indizies erstellt/gelöscht wurden...