procedure CreateVarArrayFromDataset(var varResultSet: OleVariant;
ADataset : TDataset); var m : Integer; nRecords, nColumns, nCurRec : Integer; begin nRecords := -1; nColumns := -1;try
{ Create the array... } { Set size to 0..m-1 where m equals the number of columns. } nColumns := Max(0, ADataset.FieldCount-1);{ Each item is an array of size (0..n) where n equals the }
{ number of records.} { Entry 0 is where we store the column name. }nRecords := Max(0, ADataset.RecordCount);
varResultSet := VarArrayCreate([0, nColumns, 0, nRecords],
varVariant);for m := 0 to nColumns do
varResultSet[m, 0] := ADataset.Fields[m].DisplayLabel;{ Populate from result set. }
ADataset.First; nCurRec := 1; { Current record number. } while not ADataset.Eof do begin { Put in field values. } for m := 0 to nColumns do varResultSet[m, nCurRec] := ADataset.Fields[m].Value;ADataset.Next;
Inc(nCurRec); end; except on E: Exception do raise Exception.Create('CreateVarArrayFromDataset() - ' + IntToStr(nRecords) + ' rec,'+IntToStr(nColumns) +'cols,'+E.Message); end; end;