delphi本身并不提供当前记录的数据封包,但我们有一个途经可以获取,通过TDataSetProvieder的GetRecords获取。GetRecords虽然简单,但不能排除Blob字段、只取唯一主键字段等。通过研究CDS的RefreshRecord方法,提取了当前记录的封包。
Uses
DBClient,Variants,DSIntf;
type
TMyCDS = class(TCustomClientDataSet);//由于引用了Protected的一些方法和变量
/// <summary>
/// 获取当前记录的 OleVariant 封包
/// </summary>
/// <param name="CDS"></param>
/// <param name="Options"></param>
/// <returns></returns>
function GetRecordOleVar(CDS:TClientDataSet;Options:TFetchOptions):OleVariant;
var
DataPacket: TDataPacket;
NewData: OleVariant;
begin
{ Throw error if we are closed, but not if we are in the middle of opening }