怎样解决下列问题(见正文)。(200分)

  • 主题发起人 主题发起人 lukecjh
  • 开始时间 开始时间
L

lukecjh

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在为一家具有多个分店的公司写一套软件,客户要求:首先各分店利用拨号先连上远程数据库(总店)
,把分店未连上总店数据库这段时间内所作的所有变动数据要写回远程数据库(总店)。然后再把
远程数据库(总店)拨号到各分店,把这段变化的数据写回到各分店的数据库中(即总店与各分店之间
的数据能基本保持一致)。
 
用线程处理:
有一线程专门负责收发数据。
另一个线程专门负责向数据库写数据,写完后准备发送数据。
两线程之间进行合理的调度。
 
首先
最好使用2个端口同时通讯的方法,2个线程监视,开一个clent端一个server端。
分店同样开2个端口,2个线程监视,开一个clent端一个server端。

这样,当分店拨到总店时候,总店作为server可以一个端口接受多个连接,
总店拨分店时候,分店作为server,可以随时让总店进来


而在分店送到总店的数据包中,应该包含他这里放着的总店数据(除去了本店产生的数据
)的最大的all_id号,这样总店只需要将该>all_id的全部记录(
也要除去该分店的数据)读出发给该营业部就可以了。
其二,分店数据库中记录必须也要有自己的branch_data_id,并且要纪录每一
次发给总店的最后一个branch_data_id号,这样每次就可以直接发送 〉上一次最后一个
branch_data_id号的数据即可。
(当然最好的方法是,让总店在每次发完总店数据后,附加一个总店数据库中已经接受的
该营业部数据branch_data_id的最大值,以便核对)

总店方面,每条记录应该有营业部号,branch_data_id,all_id,日期等等,每个分店登陆
后,总店就给该营业部发一个总店数据库纪录中该营业部的最大branch_data_id,
让营业部先发数据,这样才能保证数据的完整。在处理数据方面,可以看看我在另外一个贴子上的说明,我等一下贴个连接
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1259706
 
ggb1999
您好!
你能否发一个例子给我,我将非常感谢!
 
这个恐怕不行,代码公司有版权的,而且这个程序涉及到到的东西太多,无法写个简
单的例子(多线程通讯,数据库设计,大文件类型数据报打包/解包),如果你是个
delphi的入门者,恐怕难度有点大
 
肯德鸡就是用这种方法搞的
 
用sqlserver的出版复制可以完成以上的功能!
 
ggb1999,我是从powerbuilder转过来的,学习delphi时间不长,我对数据库设计比较熟习,
对多线程通讯不是很了解,你能否给我一个多线程通讯的例子或者能否详细说明,我很急。我
的邮箱:luke_gd@163.net
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
813
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部