最近在看李维的《Delphi 5.x分布式多层应用系统篇》碰到这样一个问题,当一个用户进入一张表对其中一条记录的一个字段进行了修改。但是在他下载了这条数据以后,递交修改以前,有其他用户进入并修改了同一条记录的同一个字段,并已经保存。这就导致了第一个用户在保存的时候会产生错误,因为OldValue与CurValue的值不一样了,这时候在TClientDataSet的OnReconcileError事件里提供了处理该错误的方法,可以将Action值设置成raSkip,raCancel,raCorrect,raRefresh,raMerge在书中对这几个动作是这样解释的:
raSkip 跳过这笔记录,并把用户对这笔记录的更新保留在Delta中
raCancel 取消这笔记录的更新并且回复所有字段的旧值
raCorrect 把目前需要更新的数据以新的,在事件处理函数中指定的数值来更正错误
raRefresh 取消对这笔数据的所有更新,并且以目前数据表中的字段数值来代替这笔数据的数值
raMerge 把这笔需要更新的数值和目前数据表中的数值合并
但是我对这几个动作的解释是一头雾水,比方说我想进行这样的步骤,我不管目前数据库中的数值是什么,我只想把我这次更新的数据保存进去,也就是说在OldValue与CurValue的值不一样时我也想把NewValue的值更新的数据库中代替现有的CurValue时我应该怎么操作。我试了所有的动作好象都不行。
还有就是当我更新了两笔数据时其中一笔数据发生了上面的错误,而另一笔是正常的,按理说不管我执行什么操作,那笔正常的数据应该能够保存进去的,可是好象两比数据都无法递交。
小弟刚刚接触三层结构,望得到各位大虾的帮助,如以上问题有不妥的地方还请各位帮我指正!
raSkip 跳过这笔记录,并把用户对这笔记录的更新保留在Delta中
raCancel 取消这笔记录的更新并且回复所有字段的旧值
raCorrect 把目前需要更新的数据以新的,在事件处理函数中指定的数值来更正错误
raRefresh 取消对这笔数据的所有更新,并且以目前数据表中的字段数值来代替这笔数据的数值
raMerge 把这笔需要更新的数值和目前数据表中的数值合并
但是我对这几个动作的解释是一头雾水,比方说我想进行这样的步骤,我不管目前数据库中的数值是什么,我只想把我这次更新的数据保存进去,也就是说在OldValue与CurValue的值不一样时我也想把NewValue的值更新的数据库中代替现有的CurValue时我应该怎么操作。我试了所有的动作好象都不行。
还有就是当我更新了两笔数据时其中一笔数据发生了上面的错误,而另一笔是正常的,按理说不管我执行什么操作,那笔正常的数据应该能够保存进去的,可是好象两比数据都无法递交。
小弟刚刚接触三层结构,望得到各位大虾的帮助,如以上问题有不妥的地方还请各位帮我指正!
解决方案 »
- 两个问题:文件夹权限和我的文档路径
- 三层结构的程序,要传图片、文档、视频等信息上去,如何实现最好?
- 利用delphi6自带报表控件如何实现不分页连续打印?
- SetupDiRegisterCoDeviceInstallers 涉及到的路径有那些啊
- 小弟,对这个组件不太熟,能不能介绍下用法
- 已经三天了,还没有得到答案!!!!
- 关于DBGrid的一个简单问题
- 有个问题,不知各位的看法如何?
- Dephi的帮助有汉化版吗?
- 求教~! delphi控件问题 不太难 但对于新手太重要了 求教~!
- ?请教拖放过程中遇到问题,急。。。
- ★IdTCPClient的什么属性可以查看连接状态?? 比方连接上是True,没有连接上是false
你可以在中间层设置provider 的updatamode属性为upWhereKeyOnly试一下