就是要遍历一个列的每个记录,该怎么做?
很弱的问题,不过一直没查到,郁闷.......

解决方案 »

  1.   

    以下是一段C++的代码,应该能看得懂,大概就是这个意思,希望对你有所帮助。ADODataSet2->First();
    while (true)
    {
        //   ADODataSet2->FieldValues["列名"]; do something
       if (ADODataSet2->Eof != true)
          ADODataSet2->Next();
       else
          break;
    }
      

  2.   

    procedure CopyDbDataToExcel(Args: array of const);
    var
      iCount, jCount: Integer;
      XLApp: Variant;
      Sheet: Variant;
      I: Integer;
    begin
      Screen.Cursor := crHourGlass;
      if not VarIsEmpty(XLApp) then
      begin
        XLApp.DisplayAlerts := False;
        XLApp.Quit;
        VarClear(XLApp);
      end;  try
        XLApp := CreateOleObject(‘Excel.Application‘);
      except
        Screen.Cursor := crDefault;
      Exit;
      end;  XLApp.WorkBooks.Add;
      XLApp.SheetsInNewWorkbook := High(Args) + 1;  for I := Low(Args) to High(Args) do
      begin
        XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
        Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];    if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
        begin
          Screen.Cursor := crDefault;
          Exit;
        end;    TDBGrid(Args[I].VObject).DataSource.DataSet.first;
        for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
          Sheet.Cells[1, iCount + 1] := TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;    jCount := 1;
        while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
        begin
          for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
            Sheet.Cells[jCount + 1, iCount + 1] := TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;      Inc(jCount);
          TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
        end;
      end;  XlApp.Visible := True;
      Screen.Cursor := crDefault;
    end;
      

  3.   

    思路:
    遍历DBGrid其实就是遍历TDataSet而这其实就是表
    对于记录可以训话实现,每个记录的字段数量和名称也是可以获得的,
    两层循环可以搞定
      

  4.   

    同意angle097113(深思不解)的看法。
    编历表的代码
    if not 表名.active then 表名.open;
    表名.First
    while not 表名.eof do
    begin
      //操作代码部分
      表名.next;
    end;