当前位置: 代码迷 >> PB >> DataWindow中的字段怎么使用字段的动态默认值和约束检查
  详细解决方案

DataWindow中的字段怎么使用字段的动态默认值和约束检查

热度:86   发布时间:2016-04-29 06:55:28.0
DataWindow中的字段如何使用字段的动态默认值和约束检查?
能否不编写代码,直接使用动态表达式或属性值实现如下两个功能:

1、字段默认值使用动态表达式。如:日期时间字段用now()做默认值,新增记录后插入当前日期时间。
2、字段约束检查。比如说有产品和规格两个字段,它们两者不能同时重复,想在Update()之前就进行检查,或者在输入数据后马上进行检查,而不是Update()后才知道有重复值。





------解决方案--------------------
1. 我很少用这个初始化属性,想当然的以为能用动态表达式,失查失查!

2. 不同记录之间的判断是不行的,即使有办法能比较主缓冲区(PRIMARY)内的记录,也无法获得过滤缓冲区的情况。

忠告:数据窗口对象尽管强大,但若过度依赖,会给理解和维护带来很大问题!我的原则是脚本可实现的,就不用属性来实现,过多的利用数据窗口对象属性来控制表现层,会使表现层与业务层的分离困难重重!
------解决方案--------------------
initial value
要输入today
注意没有括号
------解决方案--------------------
2.要在itemchanged事件里控制,不通过则返回-1

//as_find查询条件 如:id=7 and name='abc'
//row忽略的行(当前行)
//startrow查询起始行


long l_row
long l_rowcount

if row=0 then return 0
l_rowcount=adw.rowcount()
if al_startrow>l_rowcount then return 0

//检查重复
l_row=adw.find(as_find,al_startrow,l_rowcount)
if l_row=row and l_row<l_rowcount then l_row=adw.find(as_find,l_row + 1,l_rowcount)
if l_row>0 and l_row<>row then return l_row

return 0
------解决方案--------------------
PowerBuilder dot notation:

dw_control.Object.columnname.Initial

Describe and Modify argument:

"columnname.Initial { = ' initialvalue ' }"

Parameter Description
columnname  A string containing the name of the column for which you want to get or set the initial property.
initialvalue A string containing the initial value of the column. Special values include:Empty - A string of length 0Null - No valueSpaces - All blanksToday - Current date, time, or date and time
  相关解决方案