在DBClient.pas 的TCustomClientDataSet.OpenCursor(InfoQuery: Boolean) 过程中报错,通常是什么原因

  • 主题发起人 主题发起人 jettop
  • 开始时间 开始时间
J

jettop

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBClient.pas 的TCustomClientDataSet.OpenCursor(InfoQuery: Boolean) 过程中报错,通常是什么原因??? ( 积分: 100 )<br />前提:
动态创建2个 adoquery + dataSetProvider + ClientDataSet
目的:用于主从结构的模式,并override 了TCustomClientDataSet.DoBeforeGetRecords
其代码如下:
procedure TMasterDataSet.DoBeforeGetRecords(var OwnerData: OleVariant);
var i : integer ;
begin

if Assigned(FDetailQuerys) then
//FDetailQuerys 是 TList类
for i := 0 to FDetailQuerys.Count - 1do
begin
TADOQuery(FDetailQuerys.Items).SQL.Assign(Self.Details.Items.DataSet.SQL);
TADOQuery(FDetailQuerys.Items).DataSource := FMasterDataSource ;
end ;
FMasterQuery.SQL.Assign(fsql);
Self.SetProvider(FDataSetProvider) ;
inherited;
end;
问题:
当我Open ClientDataset 时 ,在在DBClient.pas 的TCustomClientDataSet.OpenCursor(InfoQuery: Boolean) 过程的 Check(FDSBase.AppendData(DataPacket, ProviderEOF));中报错如下:
Field name can't be null, datapacket may be corrupted
请问大吓,这个错误通常是怎样引起的 ??
 
前提:
动态创建2个 adoquery + dataSetProvider + ClientDataSet
目的:用于主从结构的模式,并override 了TCustomClientDataSet.DoBeforeGetRecords
其代码如下:
procedure TMasterDataSet.DoBeforeGetRecords(var OwnerData: OleVariant);
var i : integer ;
begin

if Assigned(FDetailQuerys) then
//FDetailQuerys 是 TList类
for i := 0 to FDetailQuerys.Count - 1do
begin
TADOQuery(FDetailQuerys.Items).SQL.Assign(Self.Details.Items.DataSet.SQL);
TADOQuery(FDetailQuerys.Items).DataSource := FMasterDataSource ;
end ;
FMasterQuery.SQL.Assign(fsql);
Self.SetProvider(FDataSetProvider) ;
inherited;
end;
问题:
当我Open ClientDataset 时 ,在在DBClient.pas 的TCustomClientDataSet.OpenCursor(InfoQuery: Boolean) 过程的 Check(FDSBase.AppendData(DataPacket, ProviderEOF));中报错如下:
Field name can't be null, datapacket may be corrupted
请问大吓,这个错误通常是怎样引起的 ??
 
Field name can't be null 这不是说的很清楚了, 字段不能为空,你自已语句传给服务端的SQL,有没有问题
 
后退
顶部