方法一:
with DM.qryCustomer do
begin
 Close;
 SQL.Clear;
 SQL.Add('select *,(select top 1 Name from CustomerLB where id=a.Sort) as KHLX from Customer as a where Sort=:b');
 parameters.ParamByName('b').Value:=DM.qryCustomerLB.FieldByName('ID').AsInteger;
 Open;
end;方法二:
SQL:='Select *,(select top 1 Name from CustomerLB where id=a.Sort) as KHLX from Customer as a Where Sort ="'+DM.qryCustomerLB.FieldByName('ID').Asstring+'"';
DM.qryCustomer.Active:=False;
DM.qryCustomer.SQL.Text:=SQL;
DM.qryCustomer.Active:=True;请问这两个有什么区别?第一种方法执行可编译,第二种会报错(不匹配);

解决方案 »

  1.   

    没区别
    SQL:='Select *,(select top 1 Name from CustomerLB where id=a.Sort) as KHLX from Customer as a Where Sort ='+DM.qryCustomerLB.FieldByName('ID').Asstring;
      

  2.   

    方法二:
    SQL:='Select *,(select top 1 Name from CustomerLB where id=a.Sort) as KHLX from Customer as a Where Sort ='''+DM.qryCustomerLB.FieldByName('ID').Asstring+'''';
    DM.qryCustomer.Active:=False;
    DM.qryCustomer.SQL.Text:=SQL;
    DM.qryCustomer.Active:=True;
      

  3.   

    Sort,是什么类型字段,如果数字型,那么第二句,要去掉引号