ArrayData := VarArrayCreate([1, DataSet.RecordCount, 1, FieldList.Count], varVariant); y := 1; while not DataSet.Eof do begin z := 1; for i := 0 to FieldList.Count-1 do begin if FieldList[i]='' then ArrayData[y, z] :='' else begin if DataSet.FieldByName(FieldList[i]).DataType=ftFloat then ArrayData[y, z] := DataSet.FieldByName(FieldList[i]).AsFloat else ArrayData[y, z] := DataSet.FieldByName(FieldList[i]).Value; end; inc(z); end; DataSet.Next; inc(y); end;