字符串中有'号时要用两个''表示:
str:=str+'and xm='''+edit2.text+'''';

解决方案 »

  1.   

    str:=str+'and xm=''+edit2.text+'''
    应变为
    str:=str+'and xm='''+edit2.text+'''
      

  2.   

    应变为
    str:=str+'and xm='''+edit2.text+''''
      

  3.   

    procedure Tyhdcx_Form.BitBtn1Click(Sender: TObject);
    var str:string;
    begin
    str:='select * form yhgz where id>0';
    if edit1.Text<>'' then
      begin
      str:=str+'and yhmc='''+edit1.text+'''';
      end;
    if edit2.Text<>'' then
      begin
      str:=str+'and xm='''+edit2.text+'''';
      end;
    (datetimepicker2.DateTime)<>0 then  str:=str+'and yhrq=between '''+datetostr(datetimepicker1.date)+''' and '''+datetostr(datetimepicker2.date) '''';adoquery1.SQL.Add(str);
    end;
      
      

  4.   

    将str:=str+'and xm=''+edit2.text+'''改为
    str:=str+'and xm="'+edit2.text+'"'
      

  5.   

    引号用的不对
    str:=str+'and yhmc='+''''+edit1.text+'''';str:=str+'and xm='+''''+edit2.text+'''';datetimepicker1.datedatetimepicker2.date
      
      
      

  6.   

      应该如下写句子:
      str:=str+'and xm=''+edit2.text+''';
      str:=str+'and yhmc=''+edit1.text+''';
      

  7.   

    应该如下写句子:
    str:=str+'and yhmc='''+edit1.text+'''';
    str:=str+'and xm='''+edit1.text+'''';
      

  8.   

    将'使用ascii输出就可以了,好像有个函数为ch()。
      

  9.   

    这样改:
    procedure Tyhdcx_Form.BitBtn1Click(Sender: TObject);
    var str:string;
    begin
    str:='select * form yhgz where id>0';
    if edit1.Text<>'' then
      begin
      str:=str+'and yhmc='''+edit1.text+'''';
      end;
    if edit2.Text<>'' then
      begin
      str:=str+'and xm='''+edit2.text+'''';
      end;
    (datetimepicker2.DateTime)<>0 then  str:=str+'and yhrq between datetostr(datetimepicker1) and datetostr(datetimepicker2) ';adoquery1.SQL.Add(str);
    end;