xb登入界面,角色判断,多if判断,可以用吗?求帮忙
Public conn As ADODB.Connection
Private Sub Form_Load()
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=修;Data Source=HP049"
conn.Open
End Sub
Private Sub Command1_Click()
If id.Text = "" Then
MsgBox "用户名不能为空!", vbOKOnly + vbInformation, "友情提示"
id.SetFocus
Exit Sub
End If
If password.Text = "" Then
MsgBox "密码不能为空!", vbOKOnly + vbInformation, "友情提示"
password.SetFocus
Exit Sub
End If
Dim strSQl As String
Dim s As String
strSQl = "select * from xx where name='" & Trim$(id.Text) & "' and password='" & Trim$(password.Text) & "' "
s="select roletype from xx where name='" & Trim$(id.Text) & "' and password='" & Trim$(password.Text) & "' "
Dim str As New ADODB.Recordset
Set str = New ADODB.Recordset
str.CursorLocation = adUseClient
str.Open strSQl, conn, adOpenStatic, adLockReadOnly
With str
If .State = adStateOpen Then .Close
.Open strSQl
If .EOF Then
Try_times = Try_times + 1
If Try_times >= 3 Then
MsgBox "您已经三次尝试进入本系统,均不成功,系统将自动关闭", vbOKOnly + vbCritical, "警告"
Unload Me
Else
MsgBox "对不起,用户名不存在或密码错误 !", vbOKOnly + vbQuestion, "警告"
id.SetFocus
id.Text = ""
password.Text = ""
End If
Else
Unload Me
If (s = "管理员") Then 管理员界面.Show
If (s = "采购员") Then 采购员界面.Show
If (s = "销售员") Then 销售员界面.Show
If (s = "boss") Then Form2.Show
End If
End With
End Sub
就是在最后几句
If (s = "管理员") Then 管理员界面.Show
If (s = "采购员") Then 采购员界面.Show
If (s = "销售员") Then 销售员界面.Show
If (s = "boss") Then Form2.Show
我想做个效果。不同的roletype跳到不同的界面,好像没用,请大家看看怎么个错法??
我的数据库xx表有三列
name|password|roletype
[解决办法]
select case s
case "管理员"
管理员界面.Show
case "采购员"
采购员界面.Show
case "销售员"
销售员界面.Show
case "boss"
Form2.Show
case else
msgbox("no from")
end select
[解决办法]
这边的跳转最好弄个数据表配一下,不然以后如果有新的角色或者跳转新的页面就需要修改代码了。
[解决办法]
VB 的 case 没有 break 吗?
你打个断点跟踪一下 s的值。基本的调试技巧还是要学一点。要不然,一点点简单的问题都搞不定,很浪费时间也很影响自己的士气和别人对你的看法。
[解决办法]
你这是sql语句~你给了s一句语句~目的是要判断该用户是否存在且用户名和密码相匹配然后才准许其进行界面,那这里我就要问你了,你连查都不查,你怎么知道你要登陆的是哪个用户?你要先查询,哎~vb~vb~vb~哎~用ADO查询数据后把这个用户的roletype给一个变量,比如:
dim roletype as string
Dim str As New ADODB.Recordset
Set str = New ADODB.Recordset
str.CursorLocation = adUseClient
str.Open strSQl, conn, adOpenStatic, adLockReadOnly
With str
If .State = adStateOpen Then .Close
.Open strSQl
If .EOF Then
.close
Try_times = Try_times + 1
If Try_times >= 3 Then
MsgBox "您已经三次尝试进入本系统,均不成功,系统将自动关闭", vbOKOnly + vbCritical, "警告"
Unload Me
Else
MsgBox "对不起,用户名不存在或密码错误 !", vbOKOnly + vbQuestion, "警告"
id.SetFocus
id.Text = ""
password.Text = ""
End If
else '这里你要把用户的roletype给roletype这个变量
roletype=str("roletype")
select case roletype
case "管理员"
管理员界面.Show
case "采购员"
采购员界面.Show
case "销售员"
销售员界面.Show
case "boss"
Form2.Show
case else
msgbox("no from")
end select
end if
.close
end with
你上面的代码就只判断了用户名和密码都存在的时候是否有数据,有数据就算是用户名和密码正确~这样可不行~那单引号很好用的~
所以你还是要判断用户名和密码存不存在,再考根据他的roletype来判断他应该显示什么窗体