【问题标题】:TClientDataSet error: "Missing data provider or data packet"TClientDataSet 错误:“缺少数据提供者或数据包”
【发布时间】:2015-05-01 12:46:33
【问题描述】:

我正在 Delphi 的代码中创建 TClientDataSet 和 TDataSetProvider,并从 TUniQuery (Devart UniDAC) 加载数据。设置数据集提供者和客户端数据集的属性后,我尝试打开客户端数据集并得到运行时异常:“缺少数据提供者或数据包”。

我不确定它为什么会发生,如果有人能指出究竟是什么问题,我会很高兴。

这是我的代码:

//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));

【问题讨论】:

    标签: delphi tclientdataset


    【解决方案1】:

    如果 DatasetProvider 没有所有者,则 ClientDataSet 无法获取对提供者的引用。

    所以用

    ...Create(Self); 
    

    而不是

    ...Create(nil);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多