以下这段代码运行时出错:
with adoquery1 do
begin
  close;
  sql.clear;
  sql.add('select xh,xm from xsmd where zt=''aa'' and xh not in');
  sql.add(' (select xh from xszsqk where xl=:s1 and xq=:s2)');
  parameters.parambyname('s1').value:=s1;
  parameters.parambyname('s2').value:=s2;
  prepared:=true;
  open;
end;
出错提示是:子查询中的参数s1、s2没设置。
数据表在是SQL SERVER 2000中。
表xsmd包括字段:xh,xm,zt
表xszsqk包括字段落:xh,xl,xq
请教高手:在子查询中的参数S1,S2要如何设置,语句要如何修改?

解决方案 »

  1.   

    这样写简单
    sql.add('select xh,xm from xsmd where zt=''aa'' and xh not in ');
      sql.add(' (select xh from xszsqk where xl=s1'''+s1 + 
      ''' and xq=''' + s2 + ''')');
      

  2.   

    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add('select xh,xm from xsmd where zt=''aa'' and xh not in');
      sql.add(' (select xh from xszsqk where xl=:x1 and xq=:xq)');
      parameters[0].value:=s1;
      parameters[1].value:=s2;
      prepared:=true;
      open;
    end;
      

  3.   

    S1和S2是什么?是变量吗?若是变量则应该不会有问题,若是text控件,则应该是
    parameters[0].value:=s1.text;
      parameters[1].value:=s2.text;