以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]检查所有表中单元格值不得为空如何写代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=61647)

--  作者:huangfanzi
--  发布时间:2014/12/16 15:34:00
--  [求助]检查所有表中单元格值不得为空如何写代码
如果用户增加一条或多条记录,在他保存退出前要求整表所有的格子不得空着,如果有空值,则不得保存或不保存退出,因为这些记录在后续被别的表引用,如果出现空值则会导致程序出错,请老师放段代码上来,我是写了半天怎么也达不到效果,谢谢老师!
--  作者:有点甜
--  发布时间:2014/12/16 15:39:00
--  
Dim flag As Boolean = False
For Each dr As DataRow In DataTables("表A").DataRows
    For Each dc As DataCol In DataTables("表A").DataCols
        If dr.IsNull(dc.Name) Then
            msgbox("不行")
            flag = True
            Exit For
        End If
    Next
    If flag Then Exit For
Next

--  作者:huangfanzi
--  发布时间:2014/12/16 15:42:00
--  
能改的高级一点,告诉用户第一个不满足条件的所在单元格位于第几列第几行吗?谢谢!
--  作者:有点甜
--  发布时间:2014/12/16 15:44:00
--  
Dim flag As Boolean = False
For Each r As Row In Tables("表A").Rows
    For Each c As Col In Tables("表A").Cols
        If r.IsNull(c.Name) Then
            msgbox(r.index + 1 & " " & c.Name)
            flag = True
            Exit For
        End If
    Next
    If flag Then Exit For
Next

--  作者:huangfanzi
--  发布时间:2014/12/16 15:49:00
--  
代码中有一条看不明白:
If flag Then Exit For
用了IF 为什么没有 endif 代码放在命令窗口中执行也没报错,不解!

--  作者:有点甜
--  发布时间:2014/12/16 15:51:00
--  
 只有一句的话,可以不写End If
[此贴子已经被作者于2014-12-16 15:51:03编辑过]

--  作者:huangfanzi
--  发布时间:2014/12/16 15:52:00
--  
IF语句还能这样用?受教了,万分感谢!
--  作者:huangfanzi
--  发布时间:2014/12/16 22:07:00
--  
老师帮我看看此段代码错哪了,我的用意是如果备注列为空,允许保存,其他列为空,弹出提示框并且不得保存。
Dim flag As Boolean = False
For Each r As Row In Tables("原料采购入库通知明细").Rows
    For Each c As Col In Tables("原料采购入库通知明细").Cols
        If r.IsNull("备注") Then
            flag  = False
            Exit For
        ElseIf r.IsNull(c.Name) Then
            msgbox(c.Name & " 列 第" & r.index + 1 & "行"   & " 未输入")
            flag = True
            Exit For
        End If
        
    Next
    If flag Then
        Exit For
    Else
        msgbox("执行保存操作")
        Exit For
    End If

--  作者:有点甜
--  发布时间:2014/12/16 22:20:00
--  

Dim flag As Boolean = False
For Each r As Row In Tables("原料采购入库通知明细").Rows
    If r.IsNull("备注") Then
        Exit For
    End If
    For Each c As Col In Tables("原料采购入库通知明细").Cols
        If r.IsNull(c.Name) Then
            msgbox(c.Name & " 列 第" & r.index + 1 & "行"   & " 未输入")
            flag = True
            Exit For
        End If
    Next
    If flag Then
        Exit For
    End If
   
Next

If flag = False Then
    msgbox("执行保存操作")
End If


--  作者:huangfanzi
--  发布时间:2014/12/16 22:31:00
--  
不行啊,做了测试,第一行的备注列是空的,同时其他列也有空的,执行这段代码还是执行的保存,上面写的用意表达的不完整,应该是除备注列外,其他任何列有空值,均不得保存,请老师再帮忙改下,谢谢!