如何不用循环检测数据窗口中的某个列中的所有行是否存在空值?

tjzz 2002-12-17 04:01:40
如:
c1 c2 c3
1 1 2
2 2 3
3 4
3 4 4

像这样的一个数据窗口,如何不用循环,可以检测出c2列中有空值?
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PBsystem 2002-12-20
  • 打赏
  • 举报
回复
可以为空,却要检查是否为空,为什么自相矛盾?
我只是要检查它没有输入时再去作别的处理
还不如循环一下检查
konrong 2002-12-20
  • 打赏
  • 举报
回复
假如你不需要很详细知道dw是哪里为空,可以简单点做。
dberror中这样写:
if sqlca.sqlcode = -195 then messagebox("","有空项")
return 1
tjzz 2002-12-20
  • 打赏
  • 举报
回复
但是那个列是可以为空的,我只是要检查它没有输入时再去作别的处理
iwithyou 2002-12-17
  • 打赏
  • 举报
回复
up
booksfount 2002-12-17
  • 打赏
  • 举报
回复
我把自己程序中用的贴出来吧


可以写一个f_search_null函数,参数为adw_control类型为数据窗口,函数内容如下:
integer li_colnbr = 1
long ll_row = 1
string ls_colname, ls_textname

IF adw_control.AcceptText() = -1 THEN
adw_control.SetFocus()
messagebox("提示","数据没有录入或不合法,请重新录入!!",exclamation!)
RETURN - 2
END IF



IF adw_control.FindRequired(Primary!, ll_row,li_colnbr, ls_colname, true) < 1 THEN
RETURN - 2
END IF

IF ll_row <> 0 THEN

ls_textname = ls_colname + "_t.Text"
ls_colname = adw_control.Describe(ls_textname)
MessageBox("缺少值", "请输入'" + ls_colname + "'的值.在第"+string(ll_row)+"条纪录", exclamation! )
adw_control.SetColumn(li_colnbr)
adw_control.ScrollToRow(ll_row)
adw_control.SetFocus()
RETURN - 1

END IF


RETURN 1

当返回值为1时为满足条件,否则就是系统检测到空值,用这个函数,要设置数据窗口中那些不可空的子段的required属性打上勾,系统才可通过这个函数会自动监测,如果是那些非空的字段空了,系统是不允许转移焦点的,试试!
booksfount 2002-12-17
  • 打赏
  • 举报
回复
用findrequired函数,查找帮助,例子中有个示范程序,不过要把非空字段属性设置为required!

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧