Office中国论坛/Access中国论坛

标题: 求助! 权限. [打印本页]

作者: melanier    时间: 2007-12-5 16:08
标题: 求助! 权限.
大家好….. ,又来麻烦大家了….
想请一位高手帮忙我做的系统终于快收尾了…. 但还有一个大难题,权限

我不会做权限 所以,有没有人帮帮我….. 谢谢大家了…..

我再详细描述一下想要的权限:
1\
有一个管理员,他能进行所有的ACCESS操作.并对分发权限给新增人员及密码
       :除了这个人,所有的人都没有删除的权利
2\
总经理\运作部: 能对所有的窗体进行-----添加\修改\查找
3\
前台: 只能对Staff 也就是雇员记录进行----添加\修改\查找
4\
财务部: 能对订单\附加合同\合同进行---- 修改\查找
5\
销售部: 能对”Customer(客户记录)\ 报价单进行----添加\查找
(
:不能修改)
      : 销售部的人,只能查找到与自己相关的信息
6\
产品”—窗体,所有的人都能浏览,查找.
(
总经理\运作部能对其进行添加\修改)

7\
每个人有每个人自己的用户名和密码,由管理员设定.
(
可以找管理员修改,忘了的话管理员可以删除重设)
8\
进入的时候, 数据库的窗口是隐藏的,管理员操作的话,是不是打开时好像按什么键能进入数据库窗口状态?


,好像就上面了,是不是很麻烦 谢谢大家了…..
作者: melanier    时间: 2007-12-6 09:31
早,谢谢大肚鸭
我好早就搜索过,下载了一大堆的案例....
但都是稍简单的例子...  
像"只能修改自己名字下的记录"这样的例子找不到....


不过,听了你的话...我再努力试试........
作者: melanier    时间: 2007-12-7 15:18
!!!!!
郁闷死了。。。 搜索了一次,下载了三次,怎么我原先40几元就成-3了。。。

唉,而且大部分下载的设置权限的都简单,还有的没有原码?

作者: Victor_Duane    时间: 2007-12-16 13:52
这个在你窗体打开的时候就判断,如果不是当前用户就在打开的时候用只读方式打开记录窗体
作者: goto2008    时间: 2007-12-16 20:17
.....关注...此类话题..呵呵...
权限若没做好.汗,库都乱了.........................
作者: melanier    时间: 2007-12-24 17:03
原帖由 goto2008 于 2007-12-16 20:17 发表
.....关注...此类话题..呵呵...
权限若没做好.汗,库都乱了.........................


谢谢goto2008
唉... 三个星期过去了,我还是没什么进展...

试了用安全机制向导,最后也得不到以上我想要的结果...
有那位大侠能帮帮忙吗?来北京的话,我请吃烤鸭!....
作者: melanier    时间: 2007-12-24 17:04
呵呵....顺祝大家圣诞快乐

作者: lanchong    时间: 2007-12-24 22:00
XX部的人,只能查找到与自己相关的信息
这个只能自己写,其他的都可以在论坛里找例子
如果这些权限能加上要求特殊栏位显示/读/写/删与否,那就是完美的权限了
作者: melanier    时间: 2007-12-25 10:06
原帖由 lanchong 于 2007-12-24 22:00 发表
XX部的人,只能查找到与自己相关的信息
这个只能自己写,其他的都可以在论坛里找例子
如果这些权限能加上要求特殊栏位显示/读/写/删与否,那就是完美的权限了



我以前看到过有人编这样的库... 管理员添加用户时,会打开相应的对每个窗体"打开/读/写/删等.....对话框.

还有,好像用SQL也可以满足以上的操作.....
唉,但我SQL更不会...........
作者: iamee    时间: 2007-12-25 10:48
基本原理就是窗体打开时触发事件,检查USER级别,判断能否读写
论坛已经有这样的例子
作者: hi-wzj    时间: 2007-12-25 10:51
不麻烦,用安全工作组就能完成任务。
建立一个超级用户,将数据库、所有表,查询.......的所有权。并设置所有的权限。
删除默认的用户,管理者,用户组以及管理组的所有权限。
建立用户,建立组。用户归属于相应的组,给组设置权限。
作者: melanier    时间: 2007-12-25 11:47
原帖由 hi-wzj 于 2007-12-25 10:51 发表
不麻烦,用安全工作组就能完成任务。
建立一个超级用户,将数据库、所有表,查询.......的所有权。并设置所有的权限。
删除默认的用户,管理者,用户组以及管理组的所有权限。
建立用户,建立组。用户归属于相应的 ...


那,只能读取及录入相应用户的数据,用安全向导机制也能完成吗?
作者: hi-wzj    时间: 2007-12-25 16:58
可以的,您可参考我专栏中的“我的登陆”的例子。
作者: melanier    时间: 2007-12-26 09:48
原帖由 hi-wzj 于 2007-12-25 16:58 发表
可以的,您可参考我专栏中的“我的登陆”的例子。


谢谢,呵呵,我昨天就想进您的专栏来着... 但进不去,今天也是... :(
作者: melanier    时间: 2007-12-26 11:37
对了,我的数据库最后要拆分,然后局域网内共享使用的...
但我在看微软帮助时发现: -----" 如果要复制数据库,请不要使用数据库密码。如果设置了密码,复制的数据库将不能同步。"

难道不能通过安全机制设密码吗?
作者: AlanMeng    时间: 2007-12-26 13:31
复杂,新手,学习中。
作者: 静儿    时间: 2007-12-26 14:16
数据库密码和安全机制密码是两回事。拆分后设置数据库密码,再重新链接一次就行了。
作者: melanier    时间: 2007-12-26 16:14
原帖由 静儿 于 2007-12-26 14:16 发表
数据库密码和安全机制密码是两回事。拆分后设置数据库密码,再重新链接一次就行了。


谢谢:) 那我就放心了...


有没有人帮帮我啊...明年1月2日起就要开始用这个库了... 急死我了...

如果是用安全机制做的密码,如何实现销售员只能查看和编辑自己的报价单?

谢谢大家了....
作者: 静儿    时间: 2007-12-26 17:24
呵呵,我刚做过的,当然是在各版主的帮助下完成的。
Function 权限(类型 As String) As Boolean     '类型为安全工作组中的组名称。用于查看当前用户是否归属于该组。
Dim Rs As New ADODB.Recordset
Dim Sql As String
Dim StrPath As String
StrPath = CurrentProject.Path & "\sys.mdw"  ' 同目录下的工作组文件。
Rs.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Trim(StrPath) + ";"
Sql = "SELECT DISTINCT MSysAccounts_1.Name FROM (MSysAccounts INNER JOIN MSysGroups ON MSysAccounts.SID = MSysGroups.GroupSID) INNER JOIN MSysAccounts AS MSysAccounts_1 ON MSysGroups.UserSID = MSysAccounts_1.SID WHERE (((MSysAccounts_1.Name)=CurrentUser()) AND ((MSysAccounts.Name)='" & 类型 & "'));"
Set Rs = Rs.ActiveConnection.Execute(Sql)

If Rs.EOF Then
   权限 = False
Else
   权限 = True
End If
Set Rs = Nothing
End Function

Private Sub Form_Current()  
If 权限("超级用户") = True Then'安全工作组中有一个“超级用户”组,归入该组的人有审核权。
   Me.复核.Enabled = True
   Me.经办人.Locked = False
Else
   Me.复核.Enabled = False
   Me.经办人.Locked = True
End If
End Sub

Private Sub Form_Load()
On Error Resume Next
If 权限("查看组") = False  Then    '如果该用户有归属于查看组(老大和审批人),则显示所有记录,否则就只显示自己经办的记录。
   Me.Filter = "[经办人] like '" & CurrentUser() & "*'"
   Me.FilterOn = True
End If
DoCmd.GoToRecord , , acLast
End Sub
作者: 静儿    时间: 2007-12-26 17:27
Private Sub Form_BeforeUpdate(Cancel As Integer)  '非复核人不能修改已复核的记录。
If 权限("超级用户") = False and Me.复核 = True Then
       Cancel = True
       Me.Undo
       MsgBox "本单已复核,若要更改本记录,请联系财务部。"
       Exit Sub
End If
End Sub
作者: melanier    时间: 2007-12-26 17:29
原帖由 静儿 于 2007-12-26 17:27 发表
Private Sub Form_BeforeUpdate(Cancel As Integer)  '非复核人不能修改已复核的记录。
If 权限("超级用户") = False and Me.复核 = True Then
       Cancel = True
       Me.Undo
       MsgBox "本单已复核, ...



谢谢,能给个例子看看吗? 谢谢了....
我是个见代码晕的人.因为我不知道把你这段代码放哪....
作者: melanier    时间: 2007-12-26 17:32
如果不方便的话,把例子发到我邮箱也行,谢谢了
g.g.go@126.com
QQ: 125741026
作者: melanier    时间: 2007-12-26 17:32
还想再请问静儿:
权限做完以后,拆分共享成功了吗?
作者: 静儿    时间: 2007-12-26 17:35
我这里就是拆分使用的呀。
作者: 静儿    时间: 2007-12-26 17:38
Function.......End Function  是放在模块中的。
其他的代码放在要控制窗体记录的代码窗体中去。
作者: melanier    时间: 2007-12-26 17:55
太好了,有希望了....

不过,控制窗体记录的代码窗体?

能不能麻烦你一下,能E给我一个例子吗? 登录框架就行..!
拜托了!
作者: Derrick    时间: 2008-6-27 20:06
有没有直接通过语句,从用户类别判断权限的?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3