例如有如下程序:ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 表名 where 字段1=:a and 字段2=:b');
ADOQuery1.Parameters.ParamByName('a').Value:='字段值1';
ADOQuery1.Parameters.ParamByName('b').Value:='字段值2';
ADOQuery1.Open;请问大虾:ParamByName括号中的参数:如上述程序的a或b,能否用一个变量数组来表示?如下:
ADOQuery1.Parameters.ParamByName('a[i]').Value:='字段值[i]';
这样,如果有大量的参数,我就可以用一个循环来描述,而不是一行一行地去写程序了。请指点,多谢。

解决方案 »

  1.   

    可以呀,但你就得进行拼SQL语句了。
      

  2.   

    我的程序是这样的:假设有多个条件需要判断,我把所有条件的字段名存入数组a,字段值存入数组b,判断a[i]与b[i]是否一一对应。数组a[0..9]表示字段名,数组b[0..9]表示字段值,p[0..9]表示参数ADOQuery1.Close; 
    ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from ');
    ADOQuery1.SQL.Add('表名');
    ADOQuery1.SQL.Add(' where ');for i:=0 to 9 do
    begin
          ADOQuery1.SQL.Add(a[i]);
          ADOQuery1.SQL.Add('=');
          ADOQuery1.SQL.Add(p[i]);      if i <> 9 then ADOQuery1.SQL.Add(' and ');
     
          ADOQuery1.Parameters.ParamByName('p[i]').Value:=b[i]; 
    end;
    ADOQuery1.Open;但是红色区域总是出错,
      

  3.   


    with ADOQuery1 do begin
      Close;
      sql.Text:='select * from 表名 where 字段1=:a and 字段2=:b';
      for i :=0  to Parameters.Count-1 do
      Parameters[i].Value:=b[i];
      open;
    end;
      

  4.   

    ADOQuery1.Parameters.ParamByName('p[i]') 这样是不对的
    这里p[i]做为了个参数了,而不是其实际的值,自己再调试下吧。