VB and SQLserver做系统 判定用户权限问题 在线等 高手速度来
在登录界面判断用户权限。(用户权限表 成员: 职工号 权限)权限等级设为1,2,3,4,5,6
在登录界面添加ADO控件,用职工号 密码进行登录时,对当前登录的职工号进行选线判定。。在登录界面添加text3,当账号登录时,会在权限表中查找该账号所对应的账号等级 问题是 command的enable 不会因为权限值而出现false 或者true
代码如下:
Private Sub Command1_Click()
Dim a1 As String
If Trim(Text1.Text) = "" Then
MsgBox "请输入用户名", vbExclamation, "注意"
Text1.SetFocus
Else
On Error GoTo Errorhandle
mycon.ConnectionString = "Driver={SQL Server};Server=ASUS-PC;UID=" & Trim(Text1.Text) & ";pwd =" & Trim(Text2.Text) & ";Datebase=研究所管理"
mycon.Open
Form20.Text1.Text = Form2.Text1.Text
Form20.Text2.Text = Form2.Text3.Text
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from 系统用户角色表 where 职工号='" & Trim(Text1.Text) & "' " Adodc1.Refresh
Text3.Text = Adodc1.Recordset("权限")
Debug.Print Text3
Dim ntext As Integer
nTest = Val(Text3.Text)
Select Case (ntext)
Case 1
Form20.Command1.Enabled = True
Form20.Command2.Enabled = False
Form20.Command3.Enabled = False
Form20.Command4.Enabled = False
Form20.Command5.Enabled = False
Form20.Command6.Enabled = False
Case 2
Form20.Command1.Enabled = True
Form20.Command2.Enabled = False
Form20.Command3.Enabled = False
Form20.Command4.Enabled = True
Form20.Command5.Enabled = False
Form20.Command6.Enabled = False
Case 3
Form20.Command1.Enabled = True
Form20.Command2.Enabled = False
Form20.Command3.Enabled = False
Form20.Command4.Enabled = False
Form20.Command5.Enabled = False
Form20.Command6.Enabled = True
Case 4
Form20.Command1.Enabled = False
Form20.Command2.Enabled = False
Form20.Command3.Enabled = False
Form20.Command6.Enabled = False
Form20.Command4.Enabled = True
Form20.Command5.Enabled = True
Case 5
Form20.Command1.Enabled = True
Form20.Command3.Enabled = True
Form20.Command4.Enabled = True
Form20.Command5.Enabled = True
Form20.Command6.Enabled = True
Form20.Command2.Enabled = False
Case 6
Form20.Command1.Enabled = True
Form20.Command2.Enabled = True
Form20.Command3.Enabled = True
Form20.Command4.Enabled = True
Form20.Command5.Enabled = True
Form20.Command6.Enabled = True
End Select
Unload Me
Form20.Show
---------------------------分割线
debug.print 测试 text3的值能正常显示 ,, 问题是 command的enable 不会因为权限值而出现false 或者true
[解决办法]
你的代码基本没大问题,有问题,那是出在Form20上
- VB code
Private Sub Command1_Click() Dim a1 As String Dim Q As Long On Error GoTo Errorhandle If Trim(Text1.Text) = "" Then MsgBox "请输入用户名", vbExclamation, "注意" Text1.SetFocus Exit Sub End If '既然使用了ADODC控件,就不需要再创建连接对象' mycon.ConnectionString = "Driver={SQL Server};Server=ASUS-PC;UID=" & Trim(Text1.Text) & ";pwd =" & Trim(Text2.Text) & ";Datebase=研究所管理"' mycon.Open Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from 系统用户角色表 where 职工号='" & Trim(Text1.Text) & "' " Adodc1.Refresh Load Form20 Q = Adodc1.Recordset("权限") Debug.Print Text3 ' Dim ntext As Integer' nTest = Val(Text3.Text) With Form20 .Text1.Text = Form2.Text1.Text .Text2.Text = CStr(Q) Select Case Q Case 1 .Command1.Enabled = True .Command2.Enabled = False .Command3.Enabled = False .Command4.Enabled = False .Command5.Enabled = False .Command6.Enabled = False Case 2 .Command1.Enabled = True .Command2.Enabled = False .Command3.Enabled = False .Command4.Enabled = True .Command5.Enabled = False .Command6.Enabled = False Case 3 .Command1.Enabled = True .Command2.Enabled = False .Command3.Enabled = False .Command4.Enabled = False .Command5.Enabled = False .Command6.Enabled = True Case 4 .Command1.Enabled = False .Command2.Enabled = False .Command3.Enabled = False .Command6.Enabled = False .Command4.Enabled = True .Command5.Enabled = True Case 5 .Command1.Enabled = True .Command3.Enabled = True .Command4.Enabled = True .Command5.Enabled = True .Command6.Enabled = True .Command2.Enabled = False Case 6 .Command1.Enabled = True .Command2.Enabled = True .Command3.Enabled = True .Command4.Enabled = True .Command5.Enabled = True .Command6.Enabled = True End Select End With Form20.Show Unload MeEnd Sub
[解决办法]
- VB code
Dim ntext As IntegernTest = Val(Text3.Text)Select Case (ntext)'都没看到你赋值,可能是你想要的结果吗?ntext,nTest 自已看吧