TClientDataSet的问题,今天放分放了一百多了,所以。。。(西西) 不过这是个有一定技术含量的QUTN.

FCU 2005-08-04 04:53:13
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
ClientDataSet1.EnableControls;
ClientDataSet1.Close;
ClientDataSet1.SetProvider(DataSetProvider1); //连接一个表
ClientDataSet1.Open; //这时CDS中己有数据

ClientDataSet2.LoadFromFile('d:\xx.xml'); //导入已经创建好的XML文件
ClientDataSet1.AppendData(ClientDataSet2.Data,false); //记录已经成功追加(在GRID中可以看出)
ClientDataSet1.ApplyUpdates(0); //可是为什么提交不到表中呢!????
ClientDataSet1.DisableControls;

end;
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaD 2005-08-04
  • 打赏
  • 举报
回复
你弄混了clientDataset的data和delta不同的用处了,
data是静态数据,意思是已认可的数据,
delta则包含了静态数据,更改的数据
例如
你现在取得了5条数据,然后新增了1条数据(未applyupdate)
那么,此时,保存data,就是6条数据,保存delta,就是1条数据,当你再次载入delta时,调用applyupdate将产生一条insert语句,

可以这样理解delta,
1.append->post之后,delta---------new f1 f2 f3
2.edit->post之后,delta-----------old f1 f2 f3
new f1.1 f2.1 f3
3.delete->post之后,delta---------delete f1 f2 f3
当调用applyupdate的时候,它会解析delta,并根据上面3中情况分别产生insert,update,delete语句
当你把
cds2.data := cds1.delta
cds2.SaveToFile('xxx.xml');
你查看这个xml,你会理解midas是如何进行这些工作的.
橘子香水 2005-08-04
  • 打赏
  • 举报
回复
ClientDataSet1.AppendData(ClientDataSet2.Data,false); //记录已经成功追加(在
ClientDataSet1.Data := ClientDataSet2.Data;
等方法时,ClientDataSet1均认为读入的是原始数据,即数据没有变化,
ClientDataSet1.ApplyUpdates(-1);只提交变化的数据。

只有逐条记录加入:
ClientDataSet1.Data := ClientDataSet2.Data;
ClientDataSet1.EmptyDataSet;
while not ClientDataSet2.Eof do begin
ClientDataSet1.Append
for i:=0 to ClientDataSet1.FieldCount-1 do
ClientDataSet1.Fields[i].value := ClientDataSet2.Fields[i].Value;
ClientDataSet1.Open;
ClientDataSet2.Next;
end;
FCU 2005-08-04
  • 打赏
  • 举报
回复
快急死了都,自己顶一下。。
hqhhh 2005-08-04
  • 打赏
  • 举报
回复
不可以直接存到表中吧
cumtbwxj 2005-08-04
  • 打赏
  • 举报
回复
ClientDataSet1.ApplyUpdates(-1);

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧