近期在CSDN各位大侠的帮助下做了个程序,运行基本正常,但是一直有2点困惑我的问题1、我在每个需要访问数据库的窗口都调用到了ADO连接,如
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Driver={sql server};server=10.8.61.11;uid=sa;pwd=sa;database=feng"
conn.Open
这样的连接语句,我想这样太不方便了,又浪费代码,虽然运行起来速度感觉不到很慢,如何把这个连接移到cls模块使每个窗体都在这里调用呢?2、权限问题!我设置了SQL表login 里面有字段: 用户 | 姓名 | 权限 三个字段,权限我直接就分为管理员,录入员,查询员三个角色。怎么让这三个相应的角色进入后看到相应的菜单呢? 搜索了一些类似的贴,对我的帮助也不是很大,所以没办法就发贴咯! 呵呵。
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Driver={sql server};server=10.8.61.11;uid=sa;pwd=sa;database=feng"
conn.Open
这样的连接语句,我想这样太不方便了,又浪费代码,虽然运行起来速度感觉不到很慢,如何把这个连接移到cls模块使每个窗体都在这里调用呢?2、权限问题!我设置了SQL表login 里面有字段: 用户 | 姓名 | 权限 三个字段,权限我直接就分为管理员,录入员,查询员三个角色。怎么让这三个相应的角色进入后看到相应的菜单呢? 搜索了一些类似的贴,对我的帮助也不是很大,所以没办法就发贴咯! 呵呵。
建立一个class,在初始化时,建立conn并打开连接。
程序启动时,创立class的实例,并使用其对像conn
以后需使用时,Set myCn=实例化后的conn引用。
2.每个角色登录后,都有一个权限check过程,同时DISABLE掉不需要的菜单、按钮:
sub verify(role)
select case role
case "管理员"
Call DisableMenu
....
end select
end sub
还有登陆时应该要程序记住登陆用户ID吧?要记住ID的话这样行不,在bas中
设置一行语句public username as string
再在登陆窗中设置如果登陆成功 则username=trim(txtusername.text) '这样是否就记忆了用户在MDI窗中呢? 迷茫!请不啬赐教!
如果把EXE做成若干个DLL,比如ACT.DLL、CO.DLL、IM.DLL等等,你就必须在每个DLL中分别处理了。
(2)在数据库中放一张表,分为定义不同USER的权限以决定是否在界面对某些敏感信息进行DISABLE。其实在实际运用中,是没有这么麻烦的。以用友、金蝶、天心等大型ERP软件来看,也只不过是对价格、金额字段进行权限定义罢了。
A.在bas文件里定义如下变量
public conn as New ADODB.Connection
B.在登陆时使用如下语句打开
conn.ConnectionString = "Driver={sql server};server=10.8.61.11;uid=sa;pwd=sa;database=feng"
conn.Open
C.这样你就不用在每个窗体里都写上连接代码了
2、这个可能很难说明白,中心思想就是建一个表来存储权限信息,
一个用户能访问那些菜单都把它存到表里,像这样的表就行
用户名 菜单名
----------------
admin 菜单1
admin 菜单2
admin 菜单3
admin 菜单4
admin 菜单5
........
然后你就可以在程序中得到这些信息,再根据登陆的用户名来确定要显示那些菜单
用户名 菜单名
----------------
admin 菜单1
admin 菜单2
admin 菜单3
admin 菜单4
admin 菜单5表是有了,但能否给个样版的代码呢?
对于第二点则建立一个表USERPER 里面的字段为USERID,模块ID,INSERTFLAG,DELETEFLAG,UPDATEFLAG,SELECTFLAG
ADMIN 001 1,1,1,1
ADMIN 002 0,0,0,0
......
另一个表为MODULETABLE 字段为:模块ID,模块名称
001 菜单1
002 菜单2
....在软件的使用过程中,调用它就可以完成所需要的操作,而且可以做到通用性.
在主窗体添加一个隐藏的TEXT控件或LABEL控件~~登陆时把登陆的用户名写进控件里~~
设定每个用户可以用什么功能(比如管理员可以用所有功能,录入员只可以用录入功能,查询员只可以用查询功能)~~
方法一:
点击一个功能时判断当前TEXT控件或LABEL控件中的用户名是否有使用这项功能的权利~~如果有就运行没有就提示错误并返加~~
方法二:
在主窗体FORM_LOAD里判断登陆的用户可以用什么功能~~不能用的功能就隐藏或设为不可用就可以了~~以上两种方法可能并不是最好的~但却是最简单易明的~~适合新手用~~
这么简单明了的方法相信不用我贴出代码吧? ^_^
唉
论坛还是当年的论坛
会员已不是当年的会员了
TO monica888(北京人纽约)老兄 ,你有指桑骂槐之嫌啊? 唉,俺们菜是菜了点,非常渴望大家能多帮帮忙,如果解决了这权限问题.一辈子都记得你们哦.呵呵....TO jackcaixia(风):我就是希望你能贴出代码哦.谢谢先.TO shmily519() 你的思路完全理解.只是代码构造上面我还存在问题....主要问题在于我登陆后MID主窗体如何能记忆住登陆的用户名...谢谢!