首页 > 解决方案 > Powerbuilder - 如果值为 null,则 db 表上的帐户 ID 将更改为 0

问题描述

目前我在 datawindow 上有一个列profile.acct_no,用户从弹出列表中选择一个客户帐户。现在的问题是,用户不能清除之前已经选择的账户,它总是显示选择的账户,除非你选择另一个账户。用户可以清除列框并单击保存,但是当他们返回查看它时,该帐户会再次显示。

现在从数据库中,所有选定的帐户 id 都注册到一个表调用interco.acct_id中,我需要做的是,如果profile.acct_no列为空,则将事件 itemchanged 编码,然后它将从表中清除帐户 id interco.acct_id为 0。

我已经做的是为数据窗口编写非可视对象业务规则,在事件ue_itemchanged_acct_no return none

字符串 s_value

s_value = invo_tm.uf_getcolumnstring(istr_vldmsg.l_row, istr_vldmsg.s_column)

如果 isnull( s_value ) 或 trim( s_value ) = '' 那么 invo_tm.uf_setcolumn( istr_vldmsg.l_row, is_dirulealias + '.acct_id ', 0 )

万一

问题是,该帐户仍然显示,并且 id 不会更改为 0。任何人都可以请帮助和建议吗?非常感激。谢谢。

标签: powerbuilder

解决方案


我会检查几件事。

  • 检查数据窗口的更新属性。interco.acct_id 应该是可更新的。

  • 如果intercoprofile都在同一个数据窗口中,您将需要做一些花哨的步骤来更新两个表。在此处 查看Rick Schultz关于PFC DataWindow 多表更新服务的这篇精彩文章https://pbbrandump.wordpress.com/2008/07/02/pfc-datawindow-multi-table-update-service/

  • 此外,如果 interco.acct_id 或 profile.acct_no 在数据库中是唯一的,那么您将无法成功地将多个记录更改为 0。


推荐阅读