下载的源码,原来是用ACCESS数据库,但当我转换成SQL2000后,运行到下面的语句时
fstr:='SELECT t_saledet.bmh, t_saledet.rq, t_saledet.sj, t_saledet.jyh, t_saledet.yyyh, t_saledet.skyh, t_saledet.spbh, t_saledet.sl, t_saledet.lsj, t_saledet.sjje, t_saledet.zke, t_saledet.clabel, t_ware.flh, t_spec.cname'
       +' FROM t_saledet INNER JOIN (t_spec INNER JOIN t_ware ON (t_spec.cstyle = t_ware.flh) AND (t_spec.clabel = t_ware.clabel)) ON (t_saledet.clabel = t_ware.clabel) AND (t_saledet.spbh = t_ware.spbh)'
       +' where t_saledet.bmh like ''%s'' AND t_saledet.jyh like ''%s'' AND ([t_saledet.rq])>=#%s# and ([t_saledet.rq])<=#%s#'
       +' order by t_saledet.bmh,t_saledet.rq,t_saledet.sj';
t_saledet.skyh, t_saledet.spbh, t_saledet.sl, t_saledet.lsj, t_saledet.sjje, t_saledet.zke, t_saledet.clabel, t_ware.flh, t_spec.cname';
  with ADOQuery2 do
  begin
    close;
    sql.Clear ;
    sql.Add(Format(fstr,[chHeadUnit.getbmh(ComboBox1.text)+'%',trim(edit1.text)+'%',datetostr(DateTimePicker1.Date),datetostr(DateTimePicker2.Date)]));
    Prepared;
    open;
  end;
提示:
第一行:"#"附近有语法错误
有人说日期查询直接去掉#,但又提示:列名t_saledet.rq无效!怎么解决这个问题?谢谢!!

解决方案 »

  1.   

    saledet.rq])<=#%s#',这是什么玩意,copy下来的吧,去掉那几个乱字符
      

  2.   

    ...
    and t_saledet.rq between '2011-03-01' and '2011-03-31'
    ...
    或者...
    and t_saledet.rq>= '2011-03-01' and t_saledet.rq<= '2011-03-31'
    ...
      

  3.   

    把#变成''就可以了,就是两个单引号,在ACCESS中需要用##来表示日期,MSSQL中就不需要用#来表示,
     +' where t_saledet.bmh like ''%s'' AND t_saledet.jyh like ''%s'' AND ([t_saledet.rq])>=''%s'' and ([t_saledet.rq])<=''%s'''
      

  4.   

    谢谢各位解答,怎么应用到下面的结构中呢?
    fstr:='....AND ([t_saledet.rq])>=#%s# and ([t_saledet.rq])<=#%s#'
    ...................
    sql.Add(Format(fstr,[chHeadUnit.getbmh(ComboBox1.text)+'%',trim(edit1.text)+'%',datetostr(DateTimePicker1.Date),datetostr(DateTimePicker2.Date)]));
      

  5.   

    提示:No argument for format '%s'错误行指向
    sql.Add(Format(fstr,[chHeadUnit.getbmh(ComboBox1.text)+'%',trim(edit1.text)+'%',datetostr(DateTimePicker1.Date),datetostr(DateTimePicker2.Date)]));
      

  6.   

    说错了,你Format用得没问题,会不会是你没打开Huge Strings,超过255就不认了?你看看DELPHI IDE的
    Project->Option->Compiler选项卡里把Huge Strings给选上
      

  7.   

    and JCRQ='''+ FormatDateTime('yyyy/mm/dd',cxDateEdit1.Date)+'''
      

  8.   

    access是用#时间#的,有时好像会有问题,可用%.10f试试看,format('time>=%.10f',[tdatetime])