我要查询某时间段的记录,
我写的程序如下,但运行不了,还望大虾指教!…… 
with adoquerysech do
begin
close;
sql.Clear;
sql.Add('select * from 货单表 where 供方名称=:edit2 ');
sql.Add('and 进货日期>=:date3 and 进货日期<=:date4'); //从date3到date4之间的记录
Parameters.ParamByName('date3').value:=datetimepicker3.Date;
Parameters.ParamByName('date4').value:=datetimepicker4.Date;
parameters.ParamByName('edit2').value:=edityiban.Text;
try
open; //运行到此出错!!??
except
end;
……
出错信息如下:
---------------------------
Debugger Exception Notification
---------------------------
Project jsc.exe raised exception class EOleException with message '标准表达式中数据类型不匹配。'. Process stopped. Use Step or Run to continue.
----------------------我知道可能是在变量date3和date4设置时错了,但怎么改呀!!~~~~~~~

解决方案 »

  1.   

    先转换为字符串类型吧sql.Add('select * from 货单表 where 供方名称=:edit2 ');
    sql.Add('and format(进货日期,''YYYY-MM-DD'')>=:date3 and format(进货日期,''YYYY-MM-DD'')<=:date4'); //从date3到date4之间的记录
    Parameters.ParamByName('date3').value:=FormatDateTime('YYYY-MM-DD',datetimepicker3.Date);
    Parameters.ParamByName('date4').value:=FormatDateTime('YYYY-MM-DD',datetimepicker4.Date);
      

  2.   

    转换字符串
    PARAMETERS。PATAMBYNAME(‘DATE3’)。VALUE:=F0RMATDATETIEM(‘YYYY-MM-DD’,DATETIMEPI,KER3。DATE);
      

  3.   

    最关键的问题是你的数据库中字段类型是字符型还是日期型?如果是日期型,那么应该对外面取得的日期进行转换,可以用Cast和Convert(SQL Server)或CDate(Access)
      

  4.   

    看你是什么样的数据库,如果是SQL Server的话,应该可以;
    如果是Access,就不行;
      

  5.   

    我用的是SQL SERVER,如果是的话,应该要进行日期转换。
    采用CONVERT函数,具体可以看“SQL QUERY”中的帮助。
      

  6.   

    NQ.ParamByName('KSSJ').AsDateTime:=nmm_tdBegin;
        NQ.ParamByName('JSJ').AsDateTime:= nmm_tdEnd;
      

  7.   

    试下转换:
    Parameters.ParamByName('date3').AsDatetime:=datetimepicker3.Date;
    Parameters.ParamByName('date4').AsDatetime:=datetimepicker4.Date;
      

  8.   

    我也碰到过.把date改为datetime就行了.
    Parameters.ParamByName('date3').value:=datetimepicker3.DateTime;
    Parameters.ParamByName('date4').value:=datetimepicker4.DateTime;
      

  9.   

    还是最后一位兄台高呀!!
      这样真的搞定!哈哈……不过真的想不通,我要比较的只是Tdate型的日期,
    为什么要用Tdatetime才能和他匹配呢??
     一定又是微软access的问题!
    哎!总算搞定!!:)