我有数据库(SQL)表A
id: char
Jdate:smalldatetimeID      Jdate
A001    2003-9-2
a002 2003-10-20
...     ...
请问各位高手有两个问题(不能改变系统时间):
1。我想在DBGrid了显示的格式是
    ID    Jdate
    A001  2003-09-02
    A002  2003-10-20
    ...   ...
   即把日期显示成"YYYY-MM-DD"
2. 现在我在edit 输入2003-10-19
   我要把时间大于这个edit.text 的记录找出来
   怎样实现?

解决方案 »

  1.   

    1 Field的OnSetText事件里写 
      Text := Format('yyyy-mm-dd', Sender.AsDateTime);
    2 select * from [A] where jdate > "2003-09-02"
      

  2.   

    1. 双击与DBGrid关联的Table或是Query控件,打开Fields Editors,按右键
       选Add all fields添加所有字段,然后在字段Jdate的OnGetText事件中:
    procedure TForm1.Table1JdateGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      Text := FormatDateTime('YYYY-MM-DD', Sender.AsDateTime);
    end;
      

  3.   

    2. 设置Table或是Query的Filter:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Table1.Filter := 'Jdate > ' +QuotedStr(Edit1.Text);
      Table1.Filtered := True;
    end;