两个数据表(见附件):部门档案、员工档案,通过部门编号关联。
问题1:在员工档案中输入部门编号时,通过员工档案_DataColChanging事件检查部门编号是否在部门档案中,有时准确,而有时检测不出错误。代码如下:
功能:单列关联,父表必须存在关联行
Select Case e.DataCol.Name
Case "部门编号" '单列关联涉及的列名
Dim pr As DataRow = e.DataRow.GetParentRow("部门档案")
If pr Is Nothing Then '父表不存在关联行
e.DataRow.SetError(e.DataCol.Name,e.DataCol.Name & ",在[部门档案]中没有找到!") '设置错误信息
Else
'若父表存在关联行,清除已有的错误提示信息
If e.DataRow.GetError(e.DataCol.Name).Contains("没有找到!")
e.DataRow.SetError(e.DataCol.Name,"") '清除错误信息
End If
End If
End Select
问题2:在员工档案查阅窗口中,若在AfterLoad设置筛选条件,当前表为员工档案时没问题,但如果当前表为部门档案出错!代码如下。如何在窗口中设置当前表?
员工档案查阅-男性_AfterLoad
'MainTable = Tables("员工档案") '出错
'MainTable = Tables(e.Form.TableName) '窗口所有者,出错
'MainTable = e.Form.Controls("Table").Table 'Table绑定表,出错
'DataTables("员工档案").LoadFilter = "[性别] = '男'" '可以筛选,但当前表没变,数据编辑出错.
'DataTables("员工档案").Load()
Tables(e.Form.TableName).Filter = "[性别] = '男'" '可以筛选,但当前表没变,数据编辑出错.
CurrentTable.Filter = "[性别] = '男'" '若打开窗口前,单击表"员工档案"正确,否则出错
项目文件附件: