Als erstes würde ich entweder verhindern, wenn möglich, dass doppelte Einträge in die Liste kommen (siehe TStringList.Duplicates) oder diese vor dem Insert entfernen.
Um ein Abfragen durch SELECT zu verhindern (Netzwerkverkehr minimieren), kann man in der Firebird-
DB einen Unique-Index auf die Insert-Tabelle und das Feld setzen. z.B. mit:
"CREATE UNIQUE ASC INDEX IndexName ON IndexTabelle COMPUTED BY (upper(FeldName))" bei einem VARCHAR-Field
Dieser verhindert dann bei einem Insert doppelte Werte in der Firebird-Tabelle. (
Exception durch
DB)
Bei einem Multi-User-Betrieb würde ich kein lokales LOCATE benutzen, da Du ja nur eine zum Zeitpunkt des Öffnens eine aktuelle View auf diese Tabelle hast und in der Zwischenzeit eventuell schon Einträge auf dem
DB-Server geändert wurden (insert/update/delete)