monta hat geschrieben:Aber ein Index filtert doch nicht, oder?
Richtig!
Code: Alles auswählen
Index auf UpperCase(Name)
Suchen nach 'MO'
while Copy(FieldByName('NAME').AsString, 1, 2) = 'MO' then
ANZEIGEN
end;
Doppelte blendest Du mit der Option UNIQUE aus.
Du kannst auch einen Filter setzen, der wird aber bei größeren Dateien sehr langsam, da dieser die Daten sequenziell filtert - also erst vor der Abfrage prüft und ggfls. zum nächsten Satz springt.
Gruß
Baba.
//ERGÄNZT//
Stammt zwar aus Delphi, sollte aber auch bei Lazarus funktionieren:
Der Typ TIndexOptions beschreibt die Attribute eines Index.
Unit
Db
type
TIndexOption = (ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression, ixNonMaintained);
TIndexOptions = set of TIndexOption;
Beschreibung
TIndexOptions enthält eine Reihe von Attributen für einen bestimmten Index. Ein TIndexOptions-Wert kann keinen oder mehrere der folgenden Werte umfassen:
Wert Bedeutung
ixPrimary Der Index ist der Primärindex der Tabelle (gilt nicht für dBASE-Tabellen).
ixUnique Jeder Wert im Index ist eindeutig; es gibt keine Duplikate (gilt nicht für alle Tabellentypen).
ixDescending Der Index sortiert in absteigender Reihenfolge (gilt nicht für alle Tabellentypen).
ixExpression Der Index basiert auf einem dBASE-Schlüsselausdruck (gilt nur für dBASE-Tabellen).
ixCaseInsensitive Bei der Sortierung der Datensätze wird die Groß-/Kleinschreibung berücksichtigt (gilt nicht für alle Tabellentypen).
ixNonMaintained Der Index wird nicht automatisch aktualisiert, wenn Daten geändert werden (gilt nicht für alle Tabellentypen).
Achtung: Wenn Sie einen Index mit Optionen erzeugen, die für den verwendeten Tabellentyp nicht zulässig sind, löst AddIndex eine Exception aus.
Die oben aufgeführten Optionen werden nicht von allen Tabellentypen unterstützt. Zum Teil sind die Optionen auch nur für bestimmte Versionen eines Tabellentyps zulässig. Einzelheiten zu lokalen Tabellenebenen finden Sie in der Dokumentation der BDE-Verwaltung und des Datenbank-Explorers.
Primärindizes und echte eindeutige Indizes werden nur von dBASE-Tabellen ab Version 7 oder höher unterstützt (entsprechendes gilt für Visual dBASE 7). dBASE-Tabellen unterstützen weder absteigende Indizes noch Indizes, die nicht zwischen Groß- und Kleinschreibung unterscheiden. Verwenden Sie die Konstante ixExpression für Indizes, die auf mehreren Feldern basieren oder die dBASE-Sprachfunktionen zur Datenmanipulation verwenden (für Ausdrucksindizes). Die Konstante ixExpression ist nur bei dBASE-Tabellen wirksam.
Die Konstante ixDescending für Sekundärindizes wird nur von Paradox-Tabellen ab Version 7 und höher unterstützt. Die Konstante ixUnique ist nur für Paradox-Tabellen ab Version 5 und höher zulässig. Die Konstanten ixDescending und ixCaseInsensitive können nicht für Primärindizes verwendet werden.
Welche dieser Indexoptionen für andere Tabellentypen anwendbar sind, entnehmen Sie der Dokumentation des betreffenden Datenbankssystems.