procedure TForm1.TreeView1Click(Sender: TObject);
var msg:string;
begin
 Edit1.Text:=treeview1.Selected.Text;
     ADOQuery2.Close;
    ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('select num from unit where 单位 =''' +treeview1.Selected.Text+'''');
   ADOQuery2.Open;msg:=ADOQuery2.FieldValues['num'];
 ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
  ADOQuery2.SQL.Add('select name from ry where lev like''' +msg+'''');
   ADOQuery2.Open;
 end;
end.

解决方案 »

  1.   

    ADOQuery2.SQL.Add('select name from ry where lev like'+''''+'%'+msg+'%'+'''' )
      

  2.   

    ADOQuery2.SQL.Add('select num from unit where 单位 =''' +treeview1.Selected.Text+'''');
    =>ADOQuery2.SQL.Add('select num from unit where 单位 =' + QuotedStr(treeview1.Selected.Text));    
    //建议碰到这种情况都用函数,否则如果 字符串中包括“'”就会出错msg:=ADOQuery2.FieldValues['num'];
    => msg:=ADOQuery2.FieldByName('num').asstring; //如果IS NULL会出错ADOQuery2.SQL.Add('select name from ry where lev like''' +msg+'''');=>
    ADOQuery2.SQL.Add('select name from ry where lev like' +QuotedStr(msg+'%')); //LIKE肯定要加%吧
      

  3.   

    ADOQuery2.SQL.Add('select name from ry where lev like''' +msg+'''');
    应该是
    like ''' + msg + ''''
    like后面少了个空格
      

  4.   

    大家说加通配符,也就是‘%’实际上要看数据库
    sql server就是用%
    但是像access数据库用的就是#(要不就是*)
      

  5.   

    还有最简便的方法应该是直接用
    adoquery.sql.text:='.....'就不用先clear再add了~多麻烦