Am 30.01.2012 12:25, schrieb Koenraad Lelong:
Hi,

Lazarus 0.9.30

I want to filter a TDbf. The field is a date.
When I try in Filter in Lazarus :
DATUM >= '1/1/2011'
 or
DATUM >= "1/1/2011"
 or
DATUM >= '1.1.2011'

In my application :
tblTik.Filter:='DATUM>='''+DateToStr(XferStart)+'''';

I get an error :
Index based on unknown field ">=".

What am I doing wrong ?

Regards,

Koenraad Lelong.

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Hi,

IIRC, first of all you need an index based on the field(s) you want to filter. The error is shown because the index "DATUM" doesn't exists. Here is the real problem, I don't know how to create an index of ftDate. If I try an error is shown because only string and float fields are allowed. But you could convert your database and store all dates as strings. To format the date right you can use

procedure TForm1.FormCreate(Sender: TObject);
begin
  DefaultFormatSettings.DateSeparator:='.';
  DefaultFormatSettings.ShortDateFormat:='yyyy.mm.dd';
...
end;

With this lines DateToStr() should convert it right.

The filter property wants the name of the filter to compare with, not the name of the field.

 dbf1.Filter:='INDEXNAME>='+QuotedStr(DateToStr(XferStart));
 dbf1.Filtered:=true;

If the date-field is of ftString, the dates are correctly formatted and the index is build it should work.

Hope this helps.

regards

Ingo



--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to