求救,三层结构数据传输问题! (200分)

  • 主题发起人 主题发起人 gang18
  • 开始时间 开始时间
G

gang18

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾好!
我想做个三层结构的程序,本地用access(或者sqlserver),服务器端用sqlserver,需要
客户端定期向服务器端上报数据,也可以从服务器端下载数据,我在客户端和服务器端都做
了一个标志性字段,只有没有下载过的,或者是没有上传过的,才能进行上传下载,我原来
用的是如下的语句逐个字段赋值:
ClientDataSet1.FieldByName('字段').asvarint:=query1.fieldbyname('字段').asvarint
可是,由于数据比较的多,两个库(本地与服务器)中的表基本上出不多,因为所有新增的
和修改过的数据都要上传,用我原来那样的办法可能速度比较的慢,所以,在下想请教各位
有什么好的方法,请指教,非常感谢!
(说明:客户端数据库是客户端使用的数据,只是需要定期上报服务器端,以便服务器端可
以进行汇总检查)
请详细点,谢谢!
 
如果客户端和服务器端的数据表结构一致建议写两个函数.
procedure add_data_to_server(myclientdataset:TClientdataset;myquery:Tquery);
var i:integer;
begin
for i:=0 to myclientdataset.FieldCount-1do
begin
myclientdataset.Edit;
myclientdataset.Append;
myclientdataset.Fields.Value:=myquery.Fields.Value;
end;
end;

procedure add_data_to_client(myclientdataset:TClientdataset;myquery:Tquery);
var i:integer;
begin
for i:=0 to myquery.FieldCount-1do
begin
myquery.Edit;
myquery.Append;
myquery.Fields.Value:=myclientdataset.Fields.Value;
end;
end;

然后在两个数据源之间,做循环解决问题.这种代码也没有提高效率只是对编程来讲省了一些事情.
别的方法也都试验了不少,其中考虑了batchmove,还考虑了clientdataset的data属性.
但基本走不通.所以也只能帮到这个程度上了.
 
非常感谢你!
我看到有的人说保存成文件那种,我试过,不过还不会用,也不知道效果是个什么样子,
首先savetofile('aaa.cds'),不过我还没有想到怎么样吧本地的query中的内容保存到文
件中,然后clientdataset.loadfromfile('aaa.cds'),可是,我现在有不知道怎么样才能
把load的数据保存到后台数据库中,applyupdate和post好象都没什么反应!
还是请各位大侠多多帮忙!
在下十分感谢!
 
那是不可能走通的.因为单机bde和网络bde区别比较大,
最明显的表现是在数据更新异步方面,况且保存到文件中
只是增加了一道工序,打开文件读入数据的效率还不如以数据库操作来得方便.
俄有这方面的经验.
 
后退
顶部