Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Table nach Datum filtern

  Alt 20. Feb 2013, 17:14
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;
  Mit Zitat antworten Zitat