TClientDataSet运行时如何导入数据(100分)

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

jiangyiquan

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高人:
在一个Form上,
有一个TClientDataSet ClientDataSet1
和一个TADODataset ADODataset1 .
设计时,在ClientDataSet1上击右键,
选择Assign Local Data...,可以将ADODataset1中
的数据导入ClientDataSet1。
请问,该导入功能在运行时如何实现?
 
你这样做有什么意义呢?
 
用DataSetProvider
 
想savetofile?
 
jiangyiquan对此问题的进一步说明:
本人正在用ROSE/UML进行一个远程抄电表的设计。
打算在Business Service层中使用TClientDataSet作为
实体对象类的基类,在Data Service层使用TADODataSet
与数据库连接。这样,如果数据库改变(结构、类型)
将不会影响到Business Service层,因为该层比较稳定,
而在User Service层因为使用TClientDataSet,DELPHI的
数据显示控件可以方便地使用。
这样该程序就可以方便地与其它程序配合使用。
因为DELPHI在引入数据时没有使用DataSetProvider,所以我不想
使用DataSetProvider,如果使用的话,将使得程序看上去
显得很笨拙。
本人不能使用SaveToFile,而且TClientDataSet.SaveToFile保存
的XML文件格式与TADODataSet.SaveToFile保存的XML文件
格式不一致。
 
savetofiel/loadfromfile
 
各位:
该问题我已找到答案。下面是解决的方法。
出自Steve Teixeira &
Xavier Pacheco 著的《Delphi 5 开发人员指南》
机械工业出版社 P1130--1131
function GetData(ADataSet: TDataSet): OleVariant;
begin
with TDataSetProvider.Create(nil)do
try
DataSet := ADataSet;
Result := Data ;
finally
Free;
end;
;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Data := GetData(ADODataSet1);
end;

大分送给最接近的wgzhang
其余分数答者有份。
非常感谢各位的热心帮助。
 
我对你的方法表示认同
 
多人接受答案了。
 
后退
顶部