一个远程数据传输的方法,请大家评议(200分)

  • 主题发起人 主题发起人 浪边人
  • 开始时间 开始时间

浪边人

Unregistered / Unconfirmed
GUEST, unregistred user!
一个数据中心,若干销售网点,每个销售网点若干个销售终端.三层结构+ADO连接.
modem与modem连接
目的:想把销售网点每天的销售记录通过销售网点的某一销售终端传输给数据中心的
数据库服务器.
我采用的方法:在销售网点的某一销售终端检索当天的销售记录,保存为cds文件,然后把
这一cds文件通过modem传给数据中心的某个销售终端,再由该销售终端存到数据库中.
问:
1.这一方法是否可行?在数据中心的销售终端怎样将远端传过来的cds文件保存到数据库中?
2.各位有无其它更好的办法?
 
1,sqlserver的复制与分发你可以考虑,不过自己写代码的话,就比较麻烦

2.ado控件有两个函数
loadfromfile,savetofile,能满足你的要求
 
既然做成三层的,就不必要这样了....
直接把符合的记录追加到远程数据库中不就行了? SOCKETCONNECTION支持的吧!!!
 
To OnlyYou:
loadfromfile,savetofile,正是利用这两个完成客户记录集保存为cds文件,然后将cds文件
通过modem传到数据中心的某个客户端中,再在此客户端将其装载到客户记录集中,但无论是
用ApplyUpdates( )还是用MergeChangeLog( )均不能将记录更新到数据中心的数据库中.
应该怎样做才能将传过来的cds文件正确更新到另一数据库中?远程的数据库与数据中心的数据
库结构完全一样.

To lujr:
远程客户端确实是可以通过modem直接连接到数据中心的应用程序服务器上进行销售,但考虑
到连接速率,数据安全性等,还是采取销售网点将一天的销售记录集中传到数据中心的方法.
 
你用LoadFromFile回的ADODataSet是不和数据库关联的,
你还要打开一个和数据库关联的ADODataSet,将前一个的数据导入后,就可Apply了.
 
To createnew:
用什么方法导入?
ClientDataSet2->LoadFromFile(FileName);
ClientDataSet1->Data=ClientDataSet2->Data;//这样导入吗?
ClientDataSet1->ApplyUpdates(-1); //结果:不能更新到库
 
我仔细研究了一下
在数据集loadfromfile后,commandtype,commandtext都已经改变成指向你load
的文件
已经不是你设置的数据库数据源
所以你apply,updatabatch都是不行的
你可以在loadfromfile后
用showmessage(数据集的数据源)看看,呵呵
只能用其它一条条记录插入的什么变通的办法.
 
可行, 一般通过调制解调器的远端连接都采用这种思路. 主要是为了避免通讯不稳定
带来的麻烦. 其实, 你还可以采用传送文本文件的办法, 这样处理起来比较方便, 可
移植性也好.
 
因为一次可能要传输多种数据表,如果接收端一条一条记录来处理太麻烦了。
大家再想想:怎样用最简单的办法将传过来的cds文件正确更新到另一数据库中?
 
利用SQLServer 的网络功能把,通过一个远程连接,把记录直接写到服务器的库中,不就可以咯。
 
To Ridolph:
原因我在前面已讲过。还是帮助从文件传输的角度想想办法吧!
To All:
基本思路是远程传输文件,传文件的最好办法是传cds文件吧?
 
这样吧,我简单的说一下我的方法:
1在销售端,先把数据导为CDS,将CDS以文件流的方式传入三层中.
2三层用loadFromFile/LoadfromStream导入一个ClientDataSet
3用一个循环导入一个ADODataSet,保存并返回结果.
在实际上我的第三步是读出ClientDataSet的数据,自己生成SQL.因为
这里的表结构总在改 ;<

 
createnew 你好!
如传输cds文件的话,关键之处也就是你说的第三步。可否将你的第三步过程详细说明一下。
执行效率如何?先谢谢了。
 
2月10日发分,请大家踊跃发言。
 
整个思路是可行的,这样的传输效率是比较高的,但我想不明白,为什么非要cds文件?
若表不是一个的化可以用多个dbf嘛,我就是这么干的
 
Headchen,你好!
用cds文件主要是方便,因为只要很简单的设置客户端检索数据后就可以自动生成cds文件.
这样系统只需要处理另一端的更新即可.
 
我是这样处理的:
1.在数据模块中,将每天变动情况进行审核,包括更新(追加)和删除两种情况;
2.将变动结果输出为一个控制文件,若干个.DB数据文件,采用ZLIB加密压缩并计算MD5;
3.传递文件(通过拨号,EMAIL,TCP/IP, UDP等都可以)
4.接收后,检查MD5并解压缩。
5.首先检查控制文件,将删除的记录先删除。
6.按主从表关系利用BATCHMOVE追加.DB。
7.更新完成后,生成确认文件并压缩。
8.客户端收到确认后,将成功更新的记录文件删除。
9.若不成功,则重新发送并反复。

利用三层结构,网络开销太大,尤其是当数据库记录增大以后,速度很慢。
CDS方式有一定的长处,但是对于paradox可能有所限制,例如页面锁定等问题。
 
giveup,你好!
> 6.按主从表关系利用BATCHMOVE追加.DB。
只可惜这一步又要配置BDE.因为ADO方式没法使用BATCHMOVE.
 
后退
顶部