pm:=ADOQuery1.Fields[i].AsVariant;
                    name:=ADOQuery1.Fields[i].FieldName;//保存下当前列的名字和值
                    self.ADOQuery2.Active:=false;                    if self.RadioButton2.Checked=True then
                      self.ADOQuery2.SQL.Text:='select * from 女子七项成绩 where :han>:lin'
                    else
                      self.ADOQuery2.SQL.Text:='select * from 男子十项成绩 where :han>:lin' ;
                    Self.ADOQuery2.Parameters.ParamByName('lin').Value:=pm;
                    Self.ADOQuery2.Parameters.ParamByName('han').Value:=name;
                    self.ADOQuery2.Active:=true;每次都提示找不到lin这个变量,请问是我的变量类型设置的有错误吗?还是我的SQL语句写的有问题?
我写“where :han>:lin”这样可以吗?
还有,我老是遇见找不到变量的问题,请问一般都是什么情况会出现这种错误呢?

解决方案 »

  1.   

    adoquery1.Close;ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from bominfo where 字段名=:參數名' );
    ADOQuery1.Parameters.ParamByName('參數名').Value:=參數值;
    ADOQuery1.Open;
      

  2.   

    xzl_kye兄,还是不行啊,我按照你的格式写,但还是提示lin找不到,晕,这几天就要交程序了,急啊~
      

  3.   

    对啊,从当前的记录中取字段名,然后比较这个字段中大于自己的条数。
    由于循环的每次字段名都是不一样的,比方有100米的,有400米的,所以每次都得临时取,就写成了
    :han>:lin,呵呵,没有办法啊,也不知道能不能这样写
      

  4.   

    你可以在SQL语句里面把变量定义了啊
      

  5.   

    self.ADOQuery2.Active:=false;  if self.RadioButton2.Checked=True then
        self.ADOQuery2.SQL.Text:=
          'select * from 女子七项成绩 where ' + name + '=' + QuotedStr(pm)
      else
        self.ADOQuery2.SQL.Text:=
          'select * from 男子十项成绩 where ' + name + '=' + QuotedStr(pm);
      self.ADOQuery2.Active:=true;