发现批处理的使用方式的确不如直接提交那么好.比普通的二层要多很多问题处理.
1.保存数据发生错误时,可能是几条,而不是一条.这样就要在列表中用不同的颜色显示出错的记录及提示出错的信息.
2.如果用户没有UPS,遇到一停电,数据就完了.普通的两层就没有这个缺点.
3.如果用两个TClientDataSet做成一主一从的数据表.使用就更麻烦了.主从表使用这样的批处理,会有更多的问题出现...非常非常麻烦.但我做这个控件的目的有一个,就是想把数据集读到内存之后,马上断开链接,象ADO.NET一样.呵呵.这样做,二层就可以并发更多的客户端.看来,只有在AfterPost和AfterDelete后马上ApplyUpdates才好处理.就象普通的二层一样.其实用这种方式
TAdoConnection->TDataSetProvider->TClientDataSet->TDataSource
代替普通的二层这种方式
TAdoConnection->TAdoQuery->TDataSource ,
现实不现实?各位说一下.
1.保存数据发生错误时,可能是几条,而不是一条.这样就要在列表中用不同的颜色显示出错的记录及提示出错的信息.
2.如果用户没有UPS,遇到一停电,数据就完了.普通的两层就没有这个缺点.
3.如果用两个TClientDataSet做成一主一从的数据表.使用就更麻烦了.主从表使用这样的批处理,会有更多的问题出现...非常非常麻烦.但我做这个控件的目的有一个,就是想把数据集读到内存之后,马上断开链接,象ADO.NET一样.呵呵.这样做,二层就可以并发更多的客户端.看来,只有在AfterPost和AfterDelete后马上ApplyUpdates才好处理.就象普通的二层一样.其实用这种方式
TAdoConnection->TDataSetProvider->TClientDataSet->TDataSource
代替普通的二层这种方式
TAdoConnection->TAdoQuery->TDataSource ,
现实不现实?各位说一下.
解决方案 »
- 焦急啊,在线等,FASTREPORT使用的时候一个提示冲突frx7.bpl
- 在QUICKREP中如何设置自动增加的序号
- 如何给 自己的程序指定一个快捷键 如F12?
- LIKE
- 急求播放控件,高分求购
- 现在用DELPHI WEB开发,该用什么控件?(菜鸟问题)
- 再花100分请教这个一直没能解决的问题!!!
- 用access 数据库 短日期 类型的查询无结果
- 忘各位告知:ADO连接请问怎样让所有的DB组件禁用....如果禁用ADOTABLE1.????...如果是取消禁止那..
- 如何重命名一个文件
- 请教ERP中的库存控制方法!
- Button按钮的自定义字体颜色设置为什么没有效果(ParentFont属性为False)?
cds 你可以 ApplyUpdates(delta, maxerror), 成 maxerror 来决定出错的数量, 0 就是不许出错, 让客户改正后再提交
双层也是同样的问题, 你不能每条去提交, 数据完整性得不到保证, 嗯...各方面原因啦, 数据库本身就没实时可言2) applyupdate 后的数据几层跟双层是同样的, 没什么区别, 在编译中的数据没了大家也都一样, 有何区别?3) 主从表双层是通过大量的反复查询实现的, 最后你会发现 cds 的主从表更理想, 无非是在 DataSetProvider 的 OnUpdateRecord 事件中做控制,
if SourceDS = 主表 then
(Sender as TDataSetProvider).UpdateMode := upWhereChanged
else if SourceDS = 子表
(Sender as TDataSetProvider).UpdateMode := upWhereAll
就是一般的作法了, 还可以进一步细控
正确理解后再决定是否做组件吧..
如果怕突然掉电,可以采用公文包的技术,这样来电了可以借着停电前的工作继续
所以最好还是一个TClientDataSet对应一个DataSetProvider及一个AdoQuery.我的这个组件,TClientDataSetX从TClientDataSet中派生出来.自身还包含一个AdoQuery及DataSetProvider的子对象,所以并不需要象楼上写代码来判断是主表还是子表.这个TClientDataSetX放在窗体上就象二层的TAdoQuery放在窗体上一样,直接去使用.我也明白每次Post及Delete时都ApplyUpdate是不好.但是上面不是说过了吗?一个单表ApplyUpdate时如果多条记录出错时,错误处理比二层复杂得多.这种复杂,不但自己处理它很麻烦,而且使用户也觉得很麻烦.嗯..比如我在单表删除N条记录,但在ApplyUpdate时发现有一条删除不了(此表不允许级联删除).好了.用户就要UnDoLastChange来恢复被删除的记录.很晕.被删除的记录居然出现在最后一行,而不是原来的地方.......我也明白到象凭证一样主从表的数据完整性.就是添加一条凭证后,如果不按"SAVE",整条凭证就不应该进入到数据库中.但是有些主从表并不是这么严格要求的.我选择主项的一条,就可以在细项中添加数据.可能以后又要在细项中再添加一些.
如果TCLIENTDATASET用于这样的主从表,它们也使用批处理的方式来保存.假如有时遇到细项的保存时遇到约束错,而不能保存.死了,都不知道如何显示这些错误的细项数据好.因为细项的数据在主项选择特定项才能显示出来..三层的主-细-细2 这样的表,就更更麻烦了...还有删除的问题.其实楼上只要细心一点,一样发现批处理方式存在着极大的麻烦...总之一句,批处理方式真是用得不爽.