当前位置: 代码迷 >> PB >> DataWindow中批处理的不解
  详细解决方案

DataWindow中批处理的不解

热度:60   发布时间:2016-04-29 06:55:21.0
DataWindow中批处理的疑惑?
本帖最后由 LWWANDVB 于 2013-02-18 11:55:13 编辑
  之前提过这个问题,为了更深入讨论,特开此贴。
我因惯用DELPHI的非批处理数据集,记录编辑完一提交,数据库后台的唯一约束(索引)检查马上就会起到作用。记录删除一执行,数据库后台的维护表与表关系线的触发器也会马上执行。
  当记录违反上述数据库设置规则时,直接在前台显示错误信息就OK。

  但在PB中是批处理方式,情况会变复杂,用户在编辑记录删除记录操作时,内容很可能是违反了数据库后台的这些规则,但只有Update后才知道。那么我只好:
方法一:Update前写代码提示用户某些记录违反规则。
方法二:Update后发现错误,回滚事务并把记录恢复,显示错误记录,告之用户要错误所在。
方法三:当编辑完记录或删除记录时马上Update。

使用方法一、二都会增加系统的复杂度,后台设的规则,前台也要重复设定,
使用方法三又会失去批处理的特点,不利于用户输入数据象电子表格自由的方式。

不知道大家如何处理这类问题?

------解决方案--------------------
用户应该只需要知道为什么保存不上应该就可以了

太复杂了,真是为难了程序员
------解决方案--------------------
方法三的确是最简单有效的做法。 
如果考虑到数据库多客户端并发,多表更新,方法三就最容易出问题
------解决方案--------------------
恕我直言,我认为“建议程序员不使用后台提供的功能,而是写代码把表包装起来使用,约束就跑到代码里面即可”这个说法有些过了!如果完全放弃数据库提供的逻辑约束功能,而仅仅把它当作一个容器的话,固然符合“约束尽可能集中”的原则和数据库移植的便利性,但却要付出软件复杂度极大提升,可靠性极大降低的代价,绝对是得不偿失的!

所以,方法1并不应视为一种约束,而是在数据库已保证约束前提下的一种对用户友好性的加强,代码约束和数据库约束的可靠性是不在一个数量级的。总而言之,任何原则和规范都不应机械地执行,因为事物总是不停地从简单向复杂不断进化,永远没有一劳永逸的解决方案。
  相关解决方案