当前位置: 代码迷 >> PB >> 有效性检查解决方法
  详细解决方案

有效性检查解决方法

热度:66   发布时间:2016-04-29 08:52:14.0
有效性检查
dw里某一列只允许输入数字或者大小写的“c”,
dw里某一列只允许输入0到1之间的数字
代码应该如何写

------解决方案--------------------
(1)dw里某一列只允许输入数字或者大小写的“c”:
参照 http://blog.csdn.net/yyoinge/archive/2011/04/11/6316262.aspx
(2)dw里某一列只允许输入0到1之间的数字:
可以将列的edit属性页的Style Type设置为EditMask, Mask设置为:############


------解决方案--------------------
validation expression 
dec(gettext()) >= 0 or dec(gettext()) <=1 or gettext() = 'c' or gettext() = 'C'
------解决方案--------------------
在dw控件的itemchanged事件中写如下代码(假设列名为a):
 如果输入的是单个字符则有 
IF string(dwo.name)='a' THEN
IF isnumber(data) and upper(data)='C' then
Return 0
ELSE
messagebox( "提示 ", "输入错误! ",Exclamation!)
Return 1
END IF
END IF

如果输入是一个c与数字混编的字符串,则需要写一个自定义函数来检测data。
例如:
//函数名 uf_check
//参数as_data
integer i
boolean lb_rtn
string ls_char
lb_rtn=true
for i=1 to len(as_data)
 ls_char=mid(as_data,i,1)
 IF pos('0123456789cC',ls_char)=0 then
lb_rtn=False
NEXT
 END IF
next
return lb_rtn
然后在dw控件的itemchanged事件中写
IF string(dwo.name)='a' THEN
IF uf_check(data) then
Return 0
ELSE
messagebox( "提示 ", "输入错误! ",Exclamation!)
Return 1
END IF
END IF

只允许输入0~1的数据的代码如下:
IF string(dwo.name)='a' THEN
IF isnumber(data) and dec(data)>=0 and dec(data)<=1 then
Return 0
ELSE
messagebox( "提示 ", "输入错误! ",Exclamation!)
Return 1
END IF
END IF


  相关解决方案