Einzelnen Beitrag anzeigen

raiguen
(Gast)

n/a Beiträge
 
#25

Re: vorhandenen Index ermitteln

  Alt 24. Nov 2007, 10:42
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...
  Mit Zitat antworten Zitat