代码如下:
procedure TForm2.FormCreate(Sender: TObject);
begin
  ADOConnection2.Connected := true;
  aPower := form12.power;
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('select * from cpm_AccessControl where powerLevel=aPower');
  aCommunity := ADOQuery2.FieldByName('communityName').AsString;
  ADOQuery2.Open;
end;
里面用到的两个参数是在该unit的private区声明的
  private
    { Private declarations }
    aPower: string;
    aCommunity: string;
////////////////////////////////////////////////////////////////////////////////
出错信息如下:
ADOQuery2: Field 'communityName' not found.在我建好的cpm_AccessControl 表里面确实有communityName这个字段啊,郁闷,请问是为什么会出错啊?谢谢

解决方案 »

  1.   


    ADOQuery2.Open;
    aCommunity := ADOQuery2.FieldByName('communityName').AsString;
      

  2.   


      aCommunity := ADOQuery2.FieldByName('communityName').AsString;
      ADOQuery2.Open;这两句换个顺序,你还没打开那个数据集怎么能从里面取得数据呢??
      

  3.   

    procedure TForm2.FormCreate(Sender: TObject);
    begin
      ADOConnection2.Connected := true;
      aPower := form12.power;
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('select * from cpm_AccessControl where powerLevel=')+ QuotedStr(aPower);
      ADOQuery2.Open;
      aCommunity := ADOQuery2.FieldByName('communityName').AsString;
    end;
      

  4.   

    如果你的aPower是string类型的话,在sql里面需要用单引号括起来
      

  5.   

    我的
      aCommunity := ADOQuery2.FieldByName('communityName').AsString;
      ADOQuery2.Open;
    这两句顺序是反了,呵呵,居然没看出来。惭愧!还有redleaf80(帅の很遗憾)的是对的,不过括号需要做一下改动:
    ADOQuery2.SQL.Add('select * from cpm_AccessControl where powerLevel='+ QuotedStr(aPower));谢谢各位了。