如何实现类似公文包的功能?(200分)

  • 主题发起人 主题发起人 askman
  • 开始时间 开始时间
A

askman

Unregistered / Unconfirmed
GUEST, unregistred user!
系统采用的是文件型的数据库,但是每次都要有一些笔记本电脑出去办公,
办公完后,需要将更改过的数据库更新到原服务器数据库中,为此项功能提供一个类似公文包的界面,能够实现数据库的自动更新。
不知道如何能够实现?
 
用InterNet上传文件,或用E-mail来传递文件即快又实时。
 
开始->帮助->索引->"公文包"
那里面说得很详细了.
 
我觉得关键是你的数据库设计,如果能够有一个字段标识出那些是新的,那些是
旧的,或者可以通过程序计算出来,那就没问题.(加个最后更新日期字段?)
 
抱歉, 没看清题目
可以在需要修改的表中增加一个最后修改日期字段. 修改时判断笔记本上
的表与数据库中表里这个字段值是否相同, 不同则替换日期早的.
 
放Table,ClientDataSet,Datasource,Dbgrid控件各一,将Table与数据库相连
Mouse指向ClientDataSet单击右键,选中Assign Local Data并选中Table
单击右键,选中Save to File,指定文件名,Datasource的DataSet性设为ClientDataSet
procedure TForm1.FormCreate(Sender: TObject);
begin
clientdataset1.LoadFromFile('c:/mydocu~1/liu.cds');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
clientdataset1.SaveToFile('c:/mydocu~1/liu.cds');
end;

 
/delphi4/demos/midas/brfcase/下的例子程序是公文包模式,能够实现你的要求,可仔细分析一下
 
关键是数据库同步更新问题, 如a更新了一个记录, b同时更新了这个记录, 是覆盖
方式就会有问题了. 最好还是根据数据类型应用的不同分别判断.
如, 库存量就要求增加临时增减库, 根据它更新到主数据库中....
 
to Liu JZX: 人家是"文件型数据库".
 
文件型数据库也不应该直接覆盖(如果几个人共享这个库的话).
a, b带同一个库的copy一起外出, a先回来, 如果覆盖原库, b 回来时怎么办?
覆盖? 那a的数据都没了.
 
to Another_eYes: 一? 怎么针对我来了? 我没说覆盖呀? 我是说Liu JZX的
"公文包"对文件数据库可能不太适用.

我已经说了要加"最后更新日期"字段, 数据入库时判断一下,
最新的就加入,旧的就跳过.
 
不是不是, 不是针对你, 我的意思是说需要用数据库操作来进行更新, 不能
直接更新文件.
 
再问一下大家,在两台计算机上实现对数据库的更新,通信问题如何解决?请举例说明,手段越简单越好,最好能够符合台式机和笔记本电脑各自的特点。(只要哪位大虾位在下说明白了,在下拱手奉送200分!)
 
首先要连网:-)

1、如果只是简单的用 A 更新 B,那么直覆盖即可;
2、如果双方互相补充,那么无什么简单的方法,可以在每个字段建立最后更新日期,
然后比较、更新;不过,如果有删除,会麻烦一点。
3、记录每次操作,按时间顺序重复一遍:-)
 
那么你决定采取什么方案了呢?

就事论事.我觉得你既然是"文件型数据库",直接文件共享就可以了.
软件里面增加一个功能,叫"提取最新数据", 连接到笔记本的数据库
文件上, 读取"最后更新日期"字段,如果比本机的新,就添加进来.

手段其实很多,不过根据你的情况,我觉得文件共享就够了.
 
caKK:还要有个更新功能,把笔记本上的数据和台试机比较,如果笔记本的新
则更新台试机上的数据,不过,如果有删除就麻烦点了:-(做删除标记,然后
更新时才删除?:-)
 
to CJ: 哈! 你挑我毛病,我也挑你毛病! :-)

可以在每个字段建立最后更新日期
^^^^^^^应为每个记录
 
//在两台计算机上实现对数据库的更新,通信问题如何解决?
对此大可不必操心,Novle和Win95都提供计算机间的联接,一是直接RS232,二是
NE2000网卡。但最简单的还数RS232/PRN接口相连。
 
呵呵,好好好,挑吧:-)
不过这样解决应该是最实际的了。
 
看了诸位大虾的解答,颇有心得,
只是既然出了200分,在下就打破烧锅问到底了,希望不吝赐教!
我觉得文件共享那个方案还是可行的,只是有一点疑问,就是两个机子相连时,
共享数据库文件的路径名如何解决?因为,有可能不单单只有一台笔记本与台式机
相连,所以最好能够动态的得到相连计算机的名字和它所存放的数据库文件的路径,
不知道是不是要使用注册表?
另外,顺便问一下,所谓的RS232/PRN接口相连与用网卡相连在程序上的处理
一样吗?
 
后退
顶部