Mega Code Archive

 
Categories / Delphi / ADO Database
 

Create OleVariant from a Dataset

Title: Create OleVariant from a Dataset Question: A handy Delphi procedure to pass datasets in a parameter for DCOM transmission. Answer: 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;