以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]数据表的两个问题,请高手帮忙!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46674)

--  作者:qujl
--  发布时间:2014/2/26 21:24:00
--  [求助]数据表的两个问题,请高手帮忙!

两个数据表(见附件):部门档案、员工档案,通过部门编号关联。

问题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 = "[性别] = \'男\'" \'若打开窗口前,单击表"员工档案"正确,否则出错

图片点击可在新窗口打开查看

 

 

项目文件附件:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table


--  作者:有点甜
--  发布时间:2014/2/26 22:26:00
--  
 这样?
 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (1).table



--  作者:qujl
--  发布时间:2014/2/27 10:27:00
--  

非常感谢!

第一个问题:单列关联检测移入DataColChanged,解决了,原来只是多列关联用DataColChanged

第二个问题:将Table设为副本,可以解决问题。但可能引起其他问题。

实际上,看到论坛里有很多人遇到这一问题,设置附表也是一种解决办法。

按常规思路考虑:既然窗口已加载,窗口所有者表和Table绑定表都已设置,默认当前表就应当是窗口的所有者表,所有操作就应当对这一表进行的。