主要是str 的赋值,帮我看看错在哪,该怎么写?
procedure TForm3.Button1Click(Sender: TObject);
var
comstr,edistr:string;
str:string;
begin
 str:='';
 if form3.CheckBox3.Checked=true then
 begin
   comstr:=form3.ComboBox1.Text;
   edistr:=form3.Edit1.Text;
   if (comstr='') or (edistr='') then
   begin
     showmessage('字段或字段值不能为空,请重新填写!');
     exit;
   end
   else
   str:=comstr+'='''+edistr+'''';
 end; if form3.CheckBox1.Checked=true then
 begin
   if (form3.MaskEdit1.Text='') or (form3.MaskEdit2.Text='') then
   begin
     showmessage('时间不能为空');
     exit;
   end
   else
   begin
    if form3.MaskEdit1.Text=form3.MaskEdit2.Text then
      begin
        showmessage('时间不能相同');
        exit;
      end;
    if (form3.MaskEdit1.Text<>'') and (form3.MaskEdit2.Text<>'') then
      begin
      if form3.CheckBox3.Checked=true then
        begin
        str:=str+'''and'''+form3.MaskEdit1.Text+'''<='''+'借贷日期'+'''<='
        +form3.MaskEdit2.Text+'''';
        end
      else
        str:=str+form3.MaskEdit1.Text+'''<='''+'借贷日期'+'''<='
        +form3.MaskEdit2.Text+'''';
      end;
   end;
 end;
 if str<>'' then
   begin
     dm.ADOQuery1.Close;
     dm.ADOQuery1.Filtered:=false;
     dm.ADOQuery1.Filter:=str;
     dm.ADOQuery1.Filtered:=true;
     dm.ADOQuery1.Open;
   end;
end

解决方案 »

  1.   

    你用showmessage看一下你的str到底是个什么东西
      

  2.   

    仔细看看这两句
    str:=str+'''and'''+form3.MaskEdit1.Text+'''<='''+'借贷日期'+'''<='
            +form3.MaskEdit2.Text+'''';
    str:=str+form3.MaskEdit1.Text+'''<='''+'借贷日期'+'''<='
            +form3.MaskEdit2.Text+'''';
      

  3.   

    str:=str+form3.MaskEdit1.Text+'''<='''+'借贷日期'+'''<='
            +form3.MaskEdit2.Text+'''';不对,a<='借贷日期'<=b是什么语法?
    另外,你的引号个数不对
      

  4.   

    我是要设置时间范围的,是不是要分开写中间用and连接?
      

  5.   

    注意在关键词前后加上空格,这样会好一点,if (form3.MaskEdit1.Text<>'') and (form3.MaskEdit2.Text<>'') then 这一个判断没有任何用处,因为你前面已经判断过了