再论PowerBuilder数据窗口的Update属性设置

        以前曾经写过一篇文章关于PowerBuilder中设置数据窗口Update属性的,主要讲的是防止出现“行在保存之前已经被更新”之类提示,属于并发问题。最近使用数据窗口过程中发现,Update属性设置不当还会出现数据的丢失,详情如下:

        现数据库中有一张表保存商品信息,商品主键为编号,其余有种类、名称、零售价、批发价等字段。在其中一个编辑窗口中,添加了一个数据窗口,牵涉到权限问题,没有将价格列入到数据窗口的SQL中。由于窗口中的商品编码比较混乱,所以用一段代码对商品重新进行了顺序编号,然后数据窗口保存。保存完后当时没发现什么,后来在其它地方处理数据时突然发现商品的价格信息都成Null了!排除了其它原因之后,想到还是因为这次编号替换操作带来的后果,为什么会丢失数据?还是数据窗口的Update属性设置不当,如下图:

再论PowerBuilder数据窗口的Update属性设置_第1张图片

         在这里,我所设置的“Key Modification ”属性是“Use Delete then insert”。那就是说,如果表数据的主键发现变动,数据窗口会将原数据删除再根据当前数据窗口中的数据重新插入,因当前数据窗口没有包括价格等字段,当然这些信息也就随之丢失了。一般我们在用PB写程序时不会允许用户随便修改已经存在的数据主键,但是如果真有这种需求,一定要注意,尤其是数据窗口中的信息不是表中完整字段信息时。

        一点心得,希望能对那些和我一样在PB编程方面经验缺乏的朋友们一点帮助。

你可能感兴趣的:(PowerBuilder技术)