select * 
from table1
where begintime>=#2004-01-01 15:00:00#
and   endtime<#2004-05-01 15:00:00#上面的语句在Sql expoloer中可以运行而在DELPHI的SQL中确要报错error: '00:00#'  unknow type

解决方案 »

  1.   

    with adoquery do
    begin
    close;sql.clear;//..........
    sql.add('select * from table1 where begintime>='+quotedstr('2004-01-01 15:00:00')+'and endtime<'+quotedstr('2004-05-01 15:00:00'));
    open;end;
      

  2.   

    formatdatetime('yyyy-mm-dd hh:mm:ss',....);
      

  3.   

    with ADOQuery1 do
    begin
      ParamCheck := false;
      Close;
      SQL.Clear
      SQL.Text = 'select * from table1 where begintime>=#2004-01-01 15:00:00# and endtime<#2004-05-01 15:00:00#';
      Open;
    end;
      

  4.   

    adoquery.sql.text:='select * from table1 where begintime>='+#39+'2004-01-01 15:00:00'+#39+' and   endtime<'+#39+'2004-05-01 15:00:00'+#39;
      

  5.   

    跟系统时间的默认设置有关,建议用DateTimeToStr函数
      

  6.   

    都没搞到点儿上,
    ADOQuery1.ParamCheck := False;
      

  7.   

    由于paramaters在解析sql语句时,对于用“:”号分隔的字符串,将被认定为是动态参数,
    //begintime>=#2004-01-01 15:00:00#//一句中就有了一个参数,其名字都是“00:00#”,由于这一名称不符合pascal语言的名称规范,adodataset在将其加入paramaters属性合中报错。
      解决这一问题目前只能采取变通方式,就是在对sql语句赋值时,阻止参数自动解析,方法如下:
      1、设置dataset.ParamCheck:=false;
      2、设置Dataset.sql.addstring('select * from table1 where ((begintime>=#2004-01-01 15:00:00#) and (endtime<#2004-05-01 15:00:00#'))
      3、dataset.open;
      另外,对于sql语句的where子名,建议多用括号进分隔,这样可以在不同的sql引擎上得到最适当的结果。
      

  8.   

    再另:access在桌面数据库领域是较为优秀的,其多表JOIN数据的联动更新功能是我认为较吸引人的功能,在DELPHI下+ADO的情况下,如果设置CursorLocation为服务端游标,则Access的多表join数据就能够直接用DataGird进行编辑。
      

  9.   

    对paramcheck的补充:
      如果想将sql语句直接写到dataset的sql属性中,则可采取三个步骤:
      1、在IDE中写入sql语句
      2、设置paramCheck=false;
      3、清除parameters列表中出现的所有参数名称
      

  10.   

    我的方法,动态设置ParamCheck := false;不行么?
      

  11.   

    select * 
    from table1
    where begintime>='2004-01-01 15:00:00'
    and   endtime<'2004-05-01 15:00:00'
      

  12.   

    你们说的都不对,还差一点:在Delphi里会把“:”后面的字符认为是参数了,方法是:2个“:”
    楼主原代码应稍微改为:
    select * 
    from table1
    where begintime>=#2004-01-01 15::00::00#
    and   endtime<#2004-05-01 15::00::00#看见没有??快把分拿来!100分哟,好多好多。。:)
      

  13.   

    weizi2000,
    你还需执行:
      Parameters.Clear;