下面是我写的一段代码:
procedure TForm1.Button1Click(Sender: TObject);
var
   tmptime:string;
   cmd:string;
   applyunit:string;
begin
   tmptime:=formatdatetime('yyyy-MM-dd',datetimepicker1.DateTime);
   applyunit:=edit1.Text;
   cmd:='';
   if tmptime<>'' then
      if cmd='' then
         cmd:='填报日期=:aa'
      else
         cmd:=cmd+ 'and 申请日期=:aa' ;
   if applyunit<>'' then
      if cmd='' then
         cmd:='申请单位='+applyunit
      else
         cmd:=cmd+'and 申请单位='+applyunit ;
   query1.Close;
   query1.SQL.Clear;
   query1.SQL.Add('select * from hr.cutdata where'+cmd);
   query1.ParamByName('aa').AsDateTime:=strtodatetime(tmptime);
   query1.ExecSQL; //运行到此步出错
   query1.Open;
end;
 出错信息为:sql命令未正确结束
请高手帮我看看联合时间的查询语句怎么写,问题在哪,非常感谢,

解决方案 »

  1.   

    where后面加空格了吗?
    最好将sql取出来放在数据库中执行试试
      

  2.   

    诚如楼上所言,
    在语句: query1.ExecSQL; //运行到此步出错
    前加一句 showmessage(query1.sql.text);
    看看你送到后台执行的语句到底是什么
      

  3.   

    47522341(睡到8:30) 给的办法你试下贴下看看
    where后面注意要有空格。。
    还有双引号的问题。。
      

  4.   

    问题解决了,是where后面少空格的原因,谢谢各位