[delphi][delphi新思想]TClientDataSet 从普通数据源中取数据
TClientDataSet原本是 delphi 中用于三层架构的一个数据组件,本质上是将数据缓存在本地 dbf 文件中(当然是内存表). 在当今的世界其实已经落后.
因为其所在的 midas 体系本身就是个笑话.
但无论如何确实有代码用到了它们,这时候要使用更常规更现代的方式来代替这些代码时就很尴尬.
其实只要在 TClientDataSet 和普通数据集间加上一个 TDataSetProvider 控件就可以解决这个问题. 代码如下:
ADOQuery1.connection := dlinkfrm.ADOConnection1;
DataSetProvide1.DataSet := ADOQuery1;
DataSource1.DataSet := ClientDataSet1;
DBGrid1.DataSource := DataSource1;
------------------------
procedure TTCDatafrm.Button1Click(Sender: TObject);
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM BASE_DATA');
ADOQuery1.open;
//将 DataSetProvide1 提供的数据传给 ClientDataSet1
ClientDataSet1.Data := DataSetProvide1.Data;
end;
--------------------------------------------------
其实关键点只有一句,就是 ClientDataSet1.Data:=DataSetProvide1.Data; 其他都是很常规的代码.
可参考 https://blog.csdn.net/u011846249/article/details/47785251