标题:vb 如何设置目录的对象变量
只看楼主
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
结帖率:84%
已结贴  问题点数:20 回复次数:18 
vb 如何设置目录的对象变量
Private Sub Form_Load()
    Dim 目录 As Object
    Set 目录 = CreateObject("")
    Adodc1.ConnectionString = strCn
    If id_公司部门名称 = 5 Then
        Command1.Visible = True
    End If

    sql1 = "select 一级目录名称 from 系统一级目录"
    Adodc1.RecordSource = sql1
    Adodc1.Refresh
    For i = 1 To Adodc1.Recordset.RecordCount
        目录 = Trim(Adodc1.Recordset.Fields("一级目录名称"))    不知道如何实现对对象变量的赋值还望指教谢谢
        目录.Item(1).Enabled = False
        Adodc1.Recordset.MoveNext
    Next
End Sub
搜索更多相关主题的帖子: Object False 如何 
2014-05-13 21:48
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
得分:0 
无人回答???
2014-05-14 11:18
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:7 
关键你要做什么。看你的代码,你的问题,猜不出来。

要目录列表?
那可能使用 dir 控件
要文件列表,可以使用 file 控件。

授人于鱼,不如授人于渔
早已停用QQ了
2014-05-14 14:39
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
得分:0 
回复 3 楼 风吹过 b
我将menu控件的名字都存入到了sql中,在系统分配权限的时候,读取相应的名称,对目录设置可以访问或者不可以访问,
如果menu控件的名字是 订单录入系统
那么在sql中查询出来也是“订单录入系统”,但是是字符串,如何使这个字符串变成对象名来使用
2014-05-14 17:47
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:7 
权限控制似乎不是目录吧?
首先,在设计时对所有有操作能力的按钮、菜单最好统一命名规范(比如全部以字符menu打头),其次对不同管理类别进行分组,最后对在用户组和用户名里设一个权限字段,记录管理权限组。在程序启动之初,对controls集合名称符合规范的先enabled=false,进入登陆时根据权限字段找到权限组,根据权限组的权限名称开通controls集合里的。enabled=true.
2014-05-14 18:50
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
得分:0 
回复 5 楼 xzlxzlxzl
我就是想问例如“订单管理系统”这个字符串如何转换成变量名。例如用一个menu对象名称为“订单管理系统” 如何是这个字符串可以转换为对象名,并且可以使用
2014-05-15 08:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
权限控制吧。

建立统一的权限库。
权限库分为二个表。
一个是 各个权限的名字。一个是各个用户的授权。
表1:  ID(自动编号),权限名
表2:ID(自动编号),权限ID(与表1ID关联),用户名

所有功能,每个功能(如每个窗体)初始化时,执行判断
先自己定义自己的功能。
然后查表1,得到权限ID,如果查表没有这个权限名,就添加进去。把新的ID传回来。 这是一个函数。
然后查表2,2个参数,一个是权限ID,一个是当前用户ID(或用户名,建议用户ID)。这是第二个函数。
       返回当前用户有权限,或无权限。
根据这个返回的结果,决定是否停止执行该功能。

编写过程中,一个一个的功能去实现,然后执行一遍后,就会在表1中找到这个功能,然后再分配用户。
当然,你要有一个超级用户,该用户是自动拥有所有的权限。

授人于鱼,不如授人于渔
早已停用QQ了
2014-05-15 08:58
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
得分:0 
回复 7 楼 风吹过 b

这是我的sql权限图,我要问的不是具体权限怎么去弄,而是问的从数据库中读取的字符串如何转换成对象名称使用!
2014-05-15 09:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
在调用每个对象时 判断。或者在显示按钮时判断。

按我 7 楼的说明
比如要调用 XX目录 ,该目录名字为 XX目录,对象 XX2
先查表一,那么表1一定会有这一行,如果没有,就需要临时添加。再重新查。最后一定可以查到一个ID。
ID    权限名
1    XX目录
查到 ID是1 。返回 1

然后再查表二,表2 可能有这行。需要提供当前登录用户,比如是 张三
ID   权限ID  用户名
1      1      张三
查表二,用 1 和张三去查,查到有数据。返回真
然后就允许张三继续向下执行

再比如当前登录的用户中李四,
在表二中没有 李四,用李四去查询时,在表2中就查不到记录。返回 假 。
这种情况,就应该停止执行后面的命令,而是提示 无权限。

Private Sub Form_Load()
Dim obj As Object

For Each obj In Me.Controls                  '遍类所有的按件
    If TypeName(obj) = "CommandButton" Then    '是按钮。如果有其它,再增加判断
        If 查表2(查表1(obj.Caption), 用户) Then      '调用二个函数。
            obj.Enabled = True                 '有权限,按钮有效
        Else
            obj.Enabled = False                '否则无效
        End If
    End If
Next
End Sub

查表1,查表2 这两个函数,自己完成。功能看最上面的描述。

---------------------------
权限设置:
根据表1中的权限,然后对选定的用户,如果给权限,就到表2中增加一行,如果删除权限,就把表2中对应的行删掉。

授人于鱼,不如授人于渔
早已停用QQ了
2014-05-15 11:49
w360989426
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:228
专家分:301
注 册:2013-11-12
得分:0 
回复 9 楼 风吹过 b
问题已经解决,但版主始终没有美白我的依稀看
字符串 要转换成 对象名使用
       字符 = Trim(Adodc1.Recordset.Fields("二级目录名称"))
        Set a = Controls(字符)  想问的是这个怎么写
        a.Item(1).Enabled = False
        Adodc1.Recordset.MoveNext


 Dim 字符 As String
    Adodc1.ConnectionString = strCn
    If id_公司部门名称 = 5 Then
        Command1.Visible = True
    End If
    '全部禁止访问目录
    '=================================================
    sql1 = "select 一级目录名称 from 系统一级目录 "
    Adodc1.RecordSource = sql1
    Adodc1.Refresh
    For i = 1 To Adodc1.Recordset.RecordCount
        字符 = Trim(Adodc1.Recordset.Fields("一级目录名称"))
        Set a = Controls(字符)
        a.Item(1).Enabled = False
        Adodc1.Recordset.MoveNext
    Next
    sql1 = "select 二级目录名称 from 系统二级目录"
    Adodc1.RecordSource = sql1
    Adodc1.Refresh
    For i = 1 To Adodc1.Recordset.RecordCount
        字符 = Trim(Adodc1.Recordset.Fields("二级目录名称"))
        Set a = Controls(字符)
        a.Item(1).Enabled = False
        Adodc1.Recordset.MoveNext
    Next
    '========================================

    '=========================================
    '查询职称对于一级目录的访问,放开一级目录的访问权限
    sql1 = "select 一级目录名称 from 系统一级目录,一级目录访问 where 系统一级目录.id_一级目录=一级目录访问.id_一级目录 and id_公司部门名称 ='" & id_公司部门名称 & "'"
    Adodc1.RecordSource = sql1
    Adodc1.Refresh
    For i = 1 To Adodc1.Recordset.RecordCount
        字符 = Trim(Adodc1.Recordset.Fields("一级目录名称"))
        Set a = Controls(字符)
        a.Item(1).Enabled = True
        Adodc1.Recordset.MoveNext
    Next

    '查询职称对于二级目录的访问,放开二级目录的访问权限
    sql1 = "select 二级目录名称 from 系统二级目录,二级目录访问 where 系统二级目录.id_二级目录=二级目录访问.id_二级目录 and id_公司部门职称 ='" & id_公司部门职称 & "'"
    Adodc1.RecordSource = sql1
    Adodc1.Refresh
    For i = 1 To Adodc1.Recordset.RecordCount
        字符 = Trim(Adodc1.Recordset.Fields("二级目录名称"))
        Set a = Controls(字符)
        a.Item(1).Enabled = True
        Adodc1.Recordset.MoveNext
    Next
    '=========================================访问权限结束
2014-05-15 12:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431490-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.380952 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved