当前位置:编程学习 > Delphi >>

本人菜鸟,用delphi写了个有关数据库的小程序,采用ado,局域网内多人操作,如何解决数据自动触发并更新?

目前我是让使用软件的人,手动刷新,但毕竟有的人会忘记,所以,经常产生重复数据。 请指导一下,我对C/S,多层分布数据库这方面的知识了解几乎为0,请大家给我一个学习的方向或者指导性教材,谢谢了!
答案:既然可以手动刷新,那就说数据库内部更新机制没有问题。
一 .最简单的办法,在程序上放个计数器,每份钟刷新一下数据。(相当于每分钟手动按下刷新按钮)。

二.如果你的刷新机制是全部更新而不是部份更新的话(这样一来每次更新数据都要全部下载,如果数据量大的话,会比较烦)
解决办法:
1 在每个数据后面添加一个字符串字段里面放日期值
用这个函数formatdatetime('YYYYMMDDHHMMSSZZZ',NOW)    可以精确到秒下面一位。这样就能知道当前数据是什么时候修改的,便于接下来的数据更新操作。
2 在数据库中添加一个最后更新时候的字段,每次写入数据后都把当前的时间(还是用上面的函数)写入到字段中,这样就能知道数据库最后更新的时间了。
3 各个客户端更新数据时,查一下本机最后更新的时候是多少,再看一下服务端数据库中的最后更新时间,有需要再更新,只更新需要的数据。
这样的话,你的数据更新量会少很多。
注:上面的设置最后更新时间的方法只适用于新建或修改,如果遇到删除数据时,最好在你的数据库中设备一个删除数据表,里面存放 所删除数据 的关键字与删除时间。每次更新时,先比对一下有没有需要删除的数据存在,如果有就在客户端上删除。



乱七八糟讲了一大堆,针对你的情况有2种解决办法,如果ADO数据库很小那就每次先删除本地数据库,再全部更新服务端数据就成了。
如果ADO数据库有些大,那就用第二种办法。


关于学习资料的问题:个人意见是去下几个简单的源代码自己研究下,可以去csdn下载,下载的话不要下载大型公司的DEMO(很难看懂),直接下网友们上传的简单的示例就好了。
如果有时间的话,可以去书店找一本DELPHI数据库的书,一般来说msado,mssql,mysql只是在链接上有些区别,使用中的区别不大,只要会一种,另外的简单看下注意事项就能明白了。

至于DELPHI版本的问题,我个人一直在用DEPHI 7 ,简单实用,功能足够,没有必要非挑最高版本,用DELHI7的最大的好处是,这个版本的版权基本没有了,borlang和Embarcadero 都已经把DEPHI7忽略,在申明中找不到DELPHI7 。还有就是这个版本的书最多
其他:在数据库中设置主键,限制重复数据的插入,抛出异常就可以 数据库 - 事务 在界面上放一个label标签控件,清空它caption属性,放在输入数据时,鼠标必须经过的地方,然后在该控件的鼠标移动事件中写刷新代码。
当然最好还是保存数据之前,对数据进行重复性检测。 

上一个:fastreport4 for delphi 7 的安装
下一个:delphi中怎么一选中某区域就直接存盘

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,