TClientDataSet error: "Missing data provider or data packet"
TClientDataSet error: "Missing data provider or data packet"
我正在 Delphi 中的代码中创建 TClientDataSet 和 TDataSetProvider,并从 TUniQuery (Devart UniDAC) 加载数据。设置数据集提供者和客户端数据集的属性后,我尝试打开客户端数据集并获取运行时异常:"Missing data provider or data packet"。
我不确定为什么会这样,如果有人能指出具体问题所在,我会很高兴。
这是我的代码:
//uq is a TUniQuery correctly set to an active TUniConnection
cdsFirstNames := TClientDataSet.Create(nil);
dspFirstNames := TDataSetProvider.Create(nil);
try
uq.SQL.Text := 'SELECT * FROM firstnames;';
uq.Prepared := True;
// uq.Open;
dspFirstNames.Name := 'dspFirstNames';
dspFirstNames.DataSet := uq;
cdsFirstNames.ProviderName := 'dspFirstNames';
cdsFirstNames.Open; // <--- Exception occurs here!
uq.Close;
showmessage(IntToStr(cdsFirstNames.RecordCount));
如果 DatasetProvider 没有所有者,则 ClientDataSet 无法获取对提供者的引用。
所以使用
...Create(Self);
而不是
...Create(nil);
我正在 Delphi 中的代码中创建 TClientDataSet 和 TDataSetProvider,并从 TUniQuery (Devart UniDAC) 加载数据。设置数据集提供者和客户端数据集的属性后,我尝试打开客户端数据集并获取运行时异常:"Missing data provider or data packet"。
我不确定为什么会这样,如果有人能指出具体问题所在,我会很高兴。
这是我的代码:
//uq is a TUniQuery correctly set to an active TUniConnection
cdsFirstNames := TClientDataSet.Create(nil);
dspFirstNames := TDataSetProvider.Create(nil);
try
uq.SQL.Text := 'SELECT * FROM firstnames;';
uq.Prepared := True;
// uq.Open;
dspFirstNames.Name := 'dspFirstNames';
dspFirstNames.DataSet := uq;
cdsFirstNames.ProviderName := 'dspFirstNames';
cdsFirstNames.Open; // <--- Exception occurs here!
uq.Close;
showmessage(IntToStr(cdsFirstNames.RecordCount));
如果 DatasetProvider 没有所有者,则 ClientDataSet 无法获取对提供者的引用。
所以使用
...Create(Self);
而不是
...Create(nil);