Foxtable(狐表)用户栏目专家坐堂 → DataRow.ClearErrors失效


  共有2800人关注过本帖树形打印复制链接

主题:DataRow.ClearErrors失效

帅哥哟,离线,有人找我吗?
askbang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:105 积分:1140 威望:0 精华:0 注册:2015/1/12 0:29:00
DataRow.ClearErrors失效  发帖心情 Post By:2015/1/31 20:47:00 [显示全部帖子]

'如下代码作为一个函数 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() ????

 回到顶部