mxADOQuery.SQL.Add('select * From Table')
mxADOQuery.SQL.Add(' where DDTime>=#:BDateTime #  AND DDTime<=#:EDateTime #');我如果不用#就可以执行下去,用#的格式是什么,这样不对吗?

解决方案 »

  1.   

    #号 就是字符 关于时间写入 sqlserver 中 都可以直接用字符串
      

  2.   

    格式是没错啊,但ado的参数不用加#或者'符号的,参数不是在执行的时候进行简单的替换,它会自己检查正确的数据类型,例如在access中
    where date=:Date 正确
    where date=#:Date# 错误在sqlserver或oracle中
    where date=:Date 正确
    where date=':Date' 错误给参数赋值的时候直接赋值日期型即可。
      

  3.   

    你试试用cvdate函数把ACCESS里的日期转换一下再进行对比
      

  4.   

    数据库中的日期是2010-10-28
    mxADOQuery.SQL.Add('select * From Table')
    mxADOQuery.SQL.Add(' where DDTime>=2010-10-28 AND DDTime<=2010-10-28');
    为什么不会出现此条记录?我的条件是大于等于啊!!
      

  5.   

    客户名称是字符型的,这样查询对吗?
     mxADOQuery.SQL.Add(' AND 客户名称=’‘’'+khFlag+'’‘');标准语句是: (AND 客户名称='客户1')
      

  6.   


    var
    time1,time2:string;
    begin
    mxADOQuery.ParamCheck:=False;
    time1:=FormatDateTime('yyyy-mm-dd hh:nn:ss',BDateTime );
    time2:=FormatDateTime('yyyy-mm-dd hh:nn:ss',EDateTime );
    mxADOQuery.SQL.Add('select * From Table')
    mxADOQuery.SQL.Add(Format(' where DDTime>=#%s# AND DDTime<=#%s#',[time1,time2]));
    mxADOQuery.ParamCheck:=False;
    原因出在这里,你自己看,:后面的字既然是表示变量的。那你的时间12:00:00 冒号后面的00就以变量来表示了
    取消ParamCheck功能后,:就能正常的使用,但你传入变量时,需要FORMAT帮助转化。
      

  7.   

    select * from tables where indate >= cvdate('2010-10-10') and indate <= cvdate('2010-10-20')
      

  8.   

    拼写SQL语句有误,可以单步调试更踪下具体的SQL语句