在开发过程运用中,有时候一个ADO控件返回了多个数据集,例如存储过程返回了2个查询结果,如下面处理


------------------PAS文件--------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  recval: _Recordset;
  RecordsAffected: OleVariant;
  iRecordsAffected: Integer;
begin
  with ADOQueryComm do
  begin
    Close;
    SQL.Add('SELECT TOP 100 * FROM dbo.fnArtMain ');
    SQL.Add('SELECT TOP 100 * FROM dbo.fnArtDetail ');
    Open;
  end;

//  ADOQuery1.Recordset := ADOQueryComm.Recordset;

//  recval := ADOQueryComm.Recordset;
//  ADOQuery2.Recordset := recval.NextRecordset(RecordsAffected);

  ADOQuery2.Recordset := ADOQueryComm.NextRecordset(iRecordsAffected);
end;


-------------------DFM文件---------------------

object Form1: TForm1
  Left = 203
  Top = 150
  Width = 928
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 912
    Height = 57
    Align = alTop
    Caption = 'Panel1'
    TabOrder = 0
    object Button1: TButton
      Left = 104
      Top = 8
      Width = 161
      Height = 33
      Caption = '打开数据集'
      TabOrder = 0
      OnClick = Button1Click
    end
  end
  object Panel2: TPanel
    Left = 0
    Top = 57
    Width = 912
    Height = 192
    Align = alTop
    Caption = 'Panel2'
    TabOrder = 1
    object DBGrid1: TDBGrid
      Left = 1
      Top = 1
      Width = 910
      Height = 190
      Align = alClient
      DataSource = DataSource1
      TabOrder = 0
      TitleFont.Charset = DEFAULT_CHARSET
      TitleFont.Color = clWindowText
      TitleFont.Height = -11
      TitleFont.Name = 'MS Sans Serif'
      TitleFont.Style = []
    end
  end
  object Panel3: TPanel
    Left = 0
    Top = 249
    Width = 912
    Height = 193
    Align = alClient
    Caption = 'Panel3'
    TabOrder = 2
    object DBGrid2: TDBGrid
      Left = 1
      Top = 1
      Width = 910
      Height = 191
      Align = alClient
      DataSource = DataSource2
      TabOrder = 0
      TitleFont.Charset = DEFAULT_CHARSET
      TitleFont.Color = clWindowText
      TitleFont.Height = -11
      TitleFont.Name = 'MS Sans Serif'
      TitleFont.Style = []
    end
  end
  object ADOQuery1: TADOQuery
    Parameters = <>
    Left = 216
    Top = 72
  end
  object DataSource1: TDataSource
    DataSet = ADOQueryComm
    Left = 344
    Top = 80
  end
  object DataSource2: TDataSource
    DataSet = ADOQuery2
    Left = 448
    Top = 224
  end
  object ADOQuery2: TADOQuery
    Parameters = <>
    Left = 344
    Top = 224
  end
  object ADOQueryComm: TADOQuery
    ConnectionString =
      'Provider=SQLOLEDB.1;Password=test;Persist Security Info=True;U' +
      'ser ID=TEST;Initial Catalog=FinishingDB;Data Source=PC'
    Parameters = <>
    Left = 208
    Top = 144
  end
end