Egy általános OnFilterRecord eljárás megoldhatja az ékezetes betűk gondját is:
procedure Form1.SQLQueryFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := Pos('akármi', DataSet.FieldByName('field1').AsString) > 0;
end;
// majd az adott helyen:
SQLQuery.Filter := ''; // ez maradjon csak üres
SQLQuery.Filtered := True; // Ennél le fog futni a fenti feltételkereső
Mindenesetre tervezői megfontolást igényel, hogy melyik a gyorsabb és hatékonyabb:
- Nagyobb adathalmazt egyszer lekérdezni, majd utána mindenféle utólagos szűrési feltételeket módosítani, és így megjeleníteni a a sok adatból kiszűrt részleteket, vagy
- az egyes szűrési feltételeket az SQL WHERE részébe helyezni, ami kevesebb adathalmazt mozgat majd át, nem igényel utómunkát, cserébe szűrési szándék változtatásakor mindannyiszor le kell futnia egy SELECT lekérdezést.
Ha a szűrés feltételeit gyorsan kell tudni változtatgatni, akkor tényleg inkább az első, de minden más esetben talán inkább a második volna a célravezetőbb.