以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]加载时显示合法数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23898)

--  作者:chnfo
--  发布时间:2012/9/23 21:43:00
--  [求助]加载时显示合法数据
使用条件:局域网内使用。
使用场景:几个部门都要登记发生的办公费用。
要求:各个部门进入之后,只能看到、而且只能登记本部门的费用。


如果设计一个窗口,通过窗口的加载条件是可以做到的。
不过做窗口呢,要增加一些代码,不用窗口,能不能做到?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:根据机构显示数据表.table


--  作者:小猪鑫鑫
--  发布时间:2012/9/24 9:21:00
--  
楼主这个是可以做到的,问题的前题是您要先启用自定义登录系统才行,也就是说给每个人分配帐户(_Username)与组别(_UserGroup),然后在您需要统计的部门费用表中增加一列部门列,这样任何一个人登录,他的所属部门被保存到了_UserGroup中,所以我们就可以在部门费用表中的

PrepareEdit

事件中填加代码

 

If e.Col.Name = "部门" AndAlso e.Row("部门") <> _UserGroup Then
    e.Cancel =
True
End
If

 

这样不是一个部门的人就不能处理该部门的数据了

 

然后填加的时候,你就在

DataRowAdding

事件中填加

e.datarow("部门") =_UseGroup

这样他填加的也是本部门的数据,试试吧,看看行不行


--  作者:lin_hailun
--  发布时间:2012/9/24 9:43:00
--  
使用条件:局域网内使用。
使用场景:几个部门都要登记发生的办公费用。
要求:各个部门进入之后,只能看到、而且只能登记本部门的费用。

用户登录以后,根据用户的信息,决定显示的数据数据就可以了。

--  作者:chnfo
--  发布时间:2012/9/24 10:28:00
--  
上面的做法做到了只能登记本部门的记录,但好象不能做到“只能看到”本部门的记录。

我想,是不是要在项目属性里的MainTableChanged事件里,加上代码过滤就OK


If MainTable.Name = "收货单" Then
    Tables("收货单").Filter = "OrgID = \'" & UserGroup & "\'"
End If

这样,登陆的用户根本看不到其他机构登记的费用了。
[此贴子已经被作者于2012-9-24 10:55:51编辑过]