有这么几方法吧
1、你给老师的表添加一个表示权限的字段,比如叫Cla***ight,使用逗号分隔该老师可管理的班,比如"1,2,3",在老师登录或是查询学生信息时,将这个Cla***ight读入变量,比如tCRight 在查询学生的SQL语句指定条件 WHERE [Class] IN (" & tCRight & ") ....
这样就实现你的想法了.
例
'打开老师表,读取权限
Rs.Open "SELECT * FROM [老师] WHERE ID=" & TeacherID
If Not(Rs.Eof) Then
tCRright = Rs("Cla***ight")
End If
Rs.Close
If tCRright = "" Then tCRright = "-1" ' 确保tCRight值有效
'生成学生查询语句
Sql = "SELECT * FROM [学生] WHERE [Cla***ight] IN (" & tCRight & ")"
Rs.Open Sql, Conn, 1,1
这样就实现你的想法了.
例
'打开老师表,读取权限
Rs.Open "SELECT * FROM [老师] WHERE ID=" & TeacherID
If Not(Rs.Eof) Then
tCRright = Rs("Cla***ight")
End If
Rs.Close
If tCRright = "" Then tCRright = "-1" ' 确保tCRight值有效
'生成学生查询语句
Sql = "SELECT * FROM [学生] WHERE [Cla***ight] IN (" & tCRight & ")"
Rs.Open Sql, Conn, 1,1
2、动态分配用户权限
你可以这样做,直接给你的用户表加一个字段,是专门用来存权限的。
然后该权限 是一个数组就可以了。比如 添加页面 是权限a
那么 就给该用户分配一个 a权限,如果删除权限是b那么该用户就是 a,b的权限,那么该用户就有 添加和删除的权限了!
我只是给你的思路!不知道你明白不明白!检测该用户权限的时候 就检测该用户的权限字段是否有a如果有的话 就有添加的权限!顺便给你一个函数instr这个是检测 a出现的位置的 !!
你可以这样做,直接给你的用户表加一个字段,是专门用来存权限的。
然后该权限 是一个数组就可以了。比如 添加页面 是权限a
那么 就给该用户分配一个 a权限,如果删除权限是b那么该用户就是 a,b的权限,那么该用户就有 添加和删除的权限了!
我只是给你的思路!不知道你明白不明白!检测该用户权限的时候 就检测该用户的权限字段是否有a如果有的话 就有添加的权限!顺便给你一个函数instr这个是检测 a出现的位置的 !!
首先是INSTN的这个函数
instr函数 InStr([start, ]string1, string2[, compare]),下标从1开始
返回指定一字符串在另一字符串中最先出现的位置。在字符串string1中,从start开始找string2,省略start时从string1头开始找。找不到时,函数值为0。
INSTR(从第几个字符开始,源字符串 ,要查找的字符串, 要找到第几个匹配的序号)
示例 本示例使用 InStr 函数来查找某字符串在另一个字符串中首次出现的位置。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 被搜索的字符串。
SearchChar = "P" ' 要查找字符串 "P"。
' 从第四个字符开始,以文本比较的方式找起。返回值为 6(小写 p)。
' 小写 p 和大写 P 在文本比较下是一样的。
MyPos = Instr(4, SearchString, SearchChar, 1)
' 从第一个字符开使,以二进制比较的方式找起。返回值为 9(大写 P)。
' 小写 p 和大写 P 在二进制比较下是不一样的。
MyPos = Instr(1, SearchString, SearchChar, 0)
' 缺省的比对方式为二进制比较(最后一个参数可省略)。
MyPos = Instr(SearchString, SearchChar) ' 返回 9。
MyPos = Instr(1, SearchString, "W") ' 返回 0。
如果想在字符串"cvbnm36def36789"找到字符串"36"的第一次出现位置,在asp语句中可以写成:
<%=InStr("cvbnm36def36789","36")%> 结果等于6
转载于:https://blog.51cto.com/2074637/786065