Foxtable(狐表)用户栏目专家坐堂 → [求助]数据表的两个问题,请高手帮忙!


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

主题:[求助]数据表的两个问题,请高手帮忙!

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


加好友 发短信
等级:婴狐 帖子:78 积分:888 威望:0 精华:0 注册:2012/12/1 22:12:00
[求助]数据表的两个问题,请高手帮忙!  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/2/26 22:26:00 [只看该作者]

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



 回到顶部
帅哥哟,离线,有人找我吗?
qujl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:78 积分:888 威望:0 精华:0 注册:2012/12/1 22:12:00
  发帖心情 Post By:2014/2/27 10:27:00 [只看该作者]

非常感谢!

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

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

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

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

 


 回到顶部