Man sollte Felder nicht im Sourcecode mit
FieldDef.Add()
anlegen, sondern entscheidend ist, dass das Feld in der Tabelle mit dem richtigen Datentyp vorhanden ist und die Testdatensätze entsprechend befüllt sind.
Dann sollte man auf keinen Feld Feldnamen mit Bindestrich ('Geb-Tag') verwenden, weil das als Minuszeichen interpretiert werden kann. Unterstriche sind dagegen in Ordnung.
Datumswerte im Filter-Property sind immer etwas tricky weil man das Datum als String angeben muss und die Schreibweise von den lokalen Einstellungen und/oder von den Eigenheiten der Datenbank abhängt.
Die Schreibweise mit den beiden # ist spezifisch für MS-
Access und funktioniert z.B. nicht beim MS
SQL-Server.
Wenn man das Event
OnFilterRecord
benützt, dann kann man sich diese Unsicherheit sparen:
Delphi-Quellcode:
procedure TForm1.MitgliederTableFilterRecord(DataSet: TDataSet; var Accept: Boolean);
var
d : TDateTime;
begin
d := SysUtils.Date - 18 * 365; // grob 18 Jahre in die Vergangenheit
if DataSet.FieldByName('Geb_Tag').AsDateTime >= d then
Accept := True
else
Accept := False
end;