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