我有一个使用 pfc 服务的用户对象。现在,在更新期间,如何确保 datawindow 中的文本字段不为空?
问问题
6324 次
3 回答
3
PFC 有一个 DataWindow 必需的列服务,它改变列的必需属性的行为以在保存时进行评估。如果您的要求涉及编辑掩码列,这将不起作用,但可能是实现此目的的简单方法。
为了使用它,我将以下代码放在构造函数中(警告:我已经有一段时间没有使用它了):
of_SetReqColumn(TRUE)
inv_reqcolumn.of_RegisterSkipColumn ("col_a")
祝你好运,
特里。
于 2010-06-24T16:13:54.617 回答
2
我将尝试解释我使用的方法,以确保用户不会将指定字段留空。以下是我在 u_dw(祖先)的 pfc_updateprep 事件中放入的代码。然后,对于我希望在任何情况下都给出值的每一列,我在描述该列的文本字段M
的tag
属性中放置一个。HTH。
integer li_size,i,l,li_zero
string ls_textname,ls_tag,ls_objects[]
string ls_col,ls_type,ls_text,ls_key,ls_any
any la_null,la_any
dec ld_zero
real lr_zero
long ll_zero
boolean lb_zero
dwItemStatus l_status,l_key_status
This.Modify("DataWindow.Table.UpdateKeyinPlace=Yes")
li_size = This.inv_base.of_Getobjects(ls_objects[ ],"column","*",TRUE)
FOR l=1 TO This.Rowcount()
l_status=This.GetItemStatus(l, 0,Primary!)
IF l_status=NewModified! OR l_status=Datamodified! THEN
FOR i = 1 to li_size
ls_col=ls_objects[i]
ls_key = Upper(This.Describe(ls_col+".Key"))
ls_type=This.Describe ( ls_col + ".ColType")
ls_textname=ls_col+"_t" // because the textnames that I use are the same as the column names followed by a "_t"
ls_tag=This.Describe(ls_textname+".Tag")
ls_text=This.Describe(ls_textname+".Text")
IF ls_tag='M' THEN
lb_zero = FALSE
IF This.Rowcount()>0 THEN
la_null=This.inv_base.of_GetItemany(l,ls_col)
choose case Upper(MidA(ls_type,1,3))
case 'DEC'
ld_zero=Dec(la_null)
IF ld_zero = 0 THEN lb_zero=TRUE
case 'INT'
li_zero=Integer(la_null)
IF li_zero = 0 THEN lb_zero=TRUE
case 'REA'
lr_zero=Real(la_null)
IF lr_zero = 0 THEN lb_zero=TRUE
case 'LON'
ll_zero=Long(la_null)
IF ll_zero = 0 THEN lb_zero=TRUE
end choose
IF Isnull(la_null) OR lb_zero THEN
Messagebox(gnv_app.of_Getframe().Getactivesheet().Title,&
"You must provide a value for the following field ~r("+&
ls_text+") !!!")
Return FAILURE
END IF
END IF
END IF
NEXT
END IF
NEXT
Return SUCCESS
于 2010-06-24T13:13:24.260 回答
2
我在 PB 中所做的是将以下数据窗口列属性设置为 TRUE 或选中:
- 空字符串为 NULL
- 必需的
如果您这样做,数据窗口应自动为您验证该字段并防止用户将该字段留空。
[编辑-特里总是好的建议后的澄清]
我帖子的第一部分应该在数据输入时适用于文本字段,我相信会强制用户在允许焦点更改之前在 dw 中输入一个有效值,除非您修改该行为,例如在 itemchanged 事件中。
可以打开 PFC 所需的色谱柱服务并注册色谱柱以提供保存时间验证。这使得用户在导航字段时在字段中移动变得不那么麻烦,并且仅在用户尝试保存时纠缠用户。
于 2010-06-24T14:18:00.860 回答