adoquery1已OPEN,有两个字段,选择和字段名称,如选择=1就在CXGRID2中显示相对应的列,=0时就不显示.现在ADOQuery1.FieldByName('字段名称').Value一直是第一个记录的值,没有随RECORDCOUNT-1现移动.
 
总是觉了这种方法不对劲,请高手指教.procedure TForm1.cxButton2Click(Sender: TObject);
var i,i1,i2:Integer;
begin
  for i:=0 to ADOQuery1.RecordCount-1 do
    begin
      if ADOQuery1. FieldByName('选择').Value='1' then
         begin
//          ShowMessage(PChar('现在是第'+inttostr(i)+'选择:'+trim(ADOQuery1. FieldByName('字段名称').Value)));
          for i1:=0 to cxGrid2DBTableView1.ColumnCount-1 do
             begin
               if Trim(ADOQuery1.FieldByName('字段名称').Value)=Trim(cxGrid2DBTableView1.Columns[i1].Caption) then
                 begin
                   ShowMessage(cxGrid2DBTableView1.Columns[i1].Caption);
                 end;
//               ShowMessage(cxGrid2DBTableView1.Columns[i2].Caption);
             end;
          end;
         end;
end;

解决方案 »

  1.   

      ADOQuery1.first;
      while not ADOQuery1.eof do
        begin
          if ADOQuery1. FieldByName('选择').Value='1' then
             begin
    //          ShowMessage(PChar('现在是第'+inttostr(i)+'选择:'+trim(ADOQuery1. FieldByName('字段名称').Value)));
              for i1:=0 to cxGrid2DBTableView1.ColumnCount-1 do
                 begin
                   if Trim(ADOQuery1.FieldByName('字段名称').Value)=Trim(cxGrid2DBTableView1.Columns[i1].Caption) then
                     begin
                       ShowMessage(cxGrid2DBTableView1.Columns[i1].Caption);
                     end;
    //               ShowMessage(cxGrid2DBTableView1.Columns[i2].Caption);
                 end;
              end;
              ADOQuery1.next;
             end;
      

  2.   


    ADOQuery1.first;
      while not ADOQuery1.eof do
      begin
      if ADOQuery1. FieldByName('选择').Value='1' then
      begin
    // ShowMessage(PChar('现在是第'+inttostr(i)+'选择:'+trim(ADOQuery1. FieldByName('字段名称').Value)));
      for i1:=0 to cxGrid2DBTableView1.ColumnCount-1 do
      begin
      if Trim(ADOQuery1.FieldByName('字段名称').Value)=Trim(cxGrid2DBTableView1.Columns[i1].Caption) then
      begin
      ShowMessage(cxGrid2DBTableView1.Columns[i1].Caption);
      end;
    // ShowMessage(cxGrid2DBTableView1.Columns[i2].Caption);
      end;  
      ADOQuery1.next;  end;
      end;