以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  DataRow.ClearErrors失效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63921)

--  作者:askbang
--  发布时间:2015/1/31 20:47:00
--  DataRow.ClearErrors失效
\'如下代码作为一个函数 checkEmpty,检查单元格是否有必填且未填数据的情况,有则设置错误标识
Dim tb As Table = Tables("主窗口_Table1")
Dim cr As Row = tb.Current
If cr Is Nothing Then
    Return Nothing
End If

cr.DataRow.ClearErrors()
For Each tc As Col In tb.Cols
    Dim dr As DataRow = DataTables("表结构").Find("[表名] = \'员工信息表\' AND [字段名] = \'" & tc.Name & "\'")
    If dr IsNot Nothing Then \'如果找到的话
        If dr("是否必填") = "是" AndAlso cr.IsNull(tc.Name) Then \'若为必填项,且没有默认值
            cr.DataRow.SetError(tc.Name, "该单元格为必填项")
        End If
    End If
Next

\'如下代码作为保存数据前的校验程序 hasError
Dim tb As Table = Tables("主窗口_Table1")
Dim cr As Row = tb.Current
If cr Is Nothing Then
    Return Nothing
End If

For Each tc As Col In tb.Cols
    If cr.DataRow.GetError(tc.Name) > "" Then
        Return True
    End If
Next

Return False

问题来了,保存前先执行 checkEmpty,如果有单元格为必填但没有数据时,能设置行错误标识,并且函数hasError返回True。可是当都填上数据后执行hasError依然返回True,并且执行hasError前界面上很明显已看到清除了错误标识,是否我没真正理解 cr.DataRow.ClearErrors() ????

--  作者:Bin
--  发布时间:2015/2/2 8:02:00
--  
cr.DataRow.SetError  你不是又设置了么?