我用一个datetimepicker控件,我打算在这个控件中给出一个时间,在数据表中检索距离这个时间最近的一个记录,所有记录中的表名字段是a2003-11-20这种形式,给即全是字符'a'加上时间字符串的形式。
假设先选择没有刚好等于这个时间的记录,
while  query1.eof  do
begin
datetimepicker.date:=datetimepicker.date-1;
sel:='a'+datetostr(datetimepicker.date);
query1.close;
query1.sql.clear;
query1.sql.add('select * from 记录表');
query1.sql.add('where 表名=(:表名)');
query1.paras[0].asstring:=sel;
query1.open;拼写可能没有拼对,因为delphi是可视化的,以上代码可以通过编译,运行也没错。
可是为什么我在datetimepicker中选择2003-12-19就找不到2003-12-01这条记录而是直接找到2003-11-25这条记录。
我已经设置属性为yyyy-mm-dd形式,数据表中也有2003-12-01这条记录,
请问各位高手是怎么回事?望详细赐教,分要多少给多少。。

解决方案 »

  1.   

    以下几个办法:
    1.打开你的数据表,实地看一下里面究竟存入的是什么样的数据
    2.在query1.Open语句前加入ShowMessage(query1.SQL.Text);查看一下你生成的查询语句究竟对不对!
    3.按你的意思 ,查询距这个时间最近的一个记录,应该将你的查找列排序后显示出来,然后再取首个或尾个记录
      

  2.   

    如果把query1.sql.add('where 表名=(:表名)');
    改成
    query1.sql.add('where 表名<=(:表名)');
    就可以看到你选择日期的前一天所有数据,加个排序就应很容易找到你要的最近记录
      

  3.   

    我 那时while 循环,怎马会出现你说的那种情况?