ClientDataSet中的数据如何复制,字段不完全相同(150分)

  • 主题发起人 主题发起人 t1antang
  • 开始时间 开始时间
T

t1antang

Unregistered / Unconfirmed
GUEST, unregistred user!
两个ClientDataSet1分别对应表A、B(使用的XML,无数据库)
A表字段A.a,A.b,A.c
B表字段B.a,B.b.B.c,B.d,D.d
想欲将B表与A表相关数据复制到A,在不使用SQL语句的情况下,有没有好办法完成。
或者,有没有办法在不使用SQL-server等数据库的情况下可以使对XML的操作支持SQL语句。
初次接触数据库类东东,请各位富翁指教。
 
数据库你不用SQL语句?
 
这里数据库存储量很小,要求不能用数据库,只用XML存储。
 
procedure CDSCopy( A, B:TClientDataSet);
var FName:String;
I:integer;
begin
if not (Assigned(A or Assigned(B)) then
Exit;
with Ado
begin
First;
While Not Eofdo
begin
B.Append;
//此处是未加条件,直接添加新记录,可以先通过关键字判断相同内容记录是否已存在
b.Edit;
For i:=0 to FieldCount -1do
begin
FName:= Fields.FieldName;
if Assigned(B.FindField(FName)) then
//查看此字段是否在B表中存在
B.FieldByName(FName).Value:=Fields.Value;
if B.State in [dsEdit,dsInsert] then
B.Post;
end;
Next;
end;
end;
end;

上面的语句是直接在回复里写的,没调试过,差不多方法就是这样,当然这里只是将数据添加上去,你还可以在添加前进一步进行判断,比如查找是否有相同内容的字段在B表中存在等等
 
那就逐条循环处理吧。
 
谢谢levi大大,哈哈,搞定了,真汗~~~
自己水平真的是太差劲了,向大大学习。
就是 if B.State in [dsEdit,dsInsert] then
B.Post;
这个要移动到where循环后。
 
后退
顶部