求一个解决企业中数据权限的通用思路!

suntonycomm 2006-02-17 12:55:15

一般情况,数据行中肯定包含一个或者多个用于数据过滤或筛选的字段。

--------------------------------------------------
ID 字段1 字段2 所属部门 所属人员
1 xxx v 生产部 张..
2 x vv 采购部 王..
3 xx vv 行政部 李..
4 .. .. 财务部 赵..
--------------------------------------------------
依据上面的部门和人员此两个字段可以进行一般数据区分(过滤),再查看时能够根据登录者的身份来确定他所能看到的数据行。

**但有些部门特殊如:财务部在看费用计划时,它比较特殊一般是可以看“所有部门的数据”。
又如:生产部它只能看到“自己部门的费用”。它和where 所属部门=UserDepartment条件又有冲突。

**遇到此种问题时,不知大家是如何解决的?
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
suntonycomm 2006-03-21
  • 打赏
  • 举报
回复
不合理的时候用“代理”就可以做到。
flowercity 2006-02-18
  • 打赏
  • 举报
回复
加权限字段
一个字节8BIT
每一个BIT代表一种权限
就搞定了
lvjack 2006-02-17
  • 打赏
  • 举报
回复
加权限字段power,内容为可以查看的部门代码,用逗号分开例如123,124,421
写SQL的时候利用power拼出类似"select …… from xxx where deptno in("+power+")"
这样的SQL
Jim@luckeeinc.com 2006-02-17
  • 打赏
  • 举报
回复
然后传不同的参数去执行这个函数就可以了
Jim@luckeeinc.com 2006-02-17
  • 打赏
  • 举报
回复
不知道这个方法能不能解决你说的问题:

写个公用函数
select_date(String str_dep) //参数dep传你要查看的那个部门(比如生产部...)
{
TStringList *sg_dep = new TStringList; //先将所有部门放在一个TStringList里
sg_dep->Add("生产部");
sg_dep->Add("采购部");
......

String strSql = "select * form ... ";
switch(sg_dep->indexof(str_dep))
{
case 0: //是生产部;
break;
case 1,2...... //其他部门
strSql += " where ......"
}

执行你的SQL;
}
lbg 2006-02-17
  • 打赏
  • 举报
回复
suntonycomm 2006-02-17
  • 打赏
  • 举报
回复
不行,这个方法太古板了,不适合企业中全程应用。
smartcomplier 2006-02-17
  • 打赏
  • 举报
回复
多了条件判断而己.

你可以在SQL语句里面做,也可以在外面判断,只不过多定义几个SQL语句了.

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧