在vb登入界面,能不能用多个if语句判断权限,然后出现不同的界面,登入界面我只想出现两个输入框
PublicconnAsADODB.ConnectionPrivateSubForm_Load()Setconn=NewADODB.Connectionconn.Conn...
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
在最后几个if比较时,是不是我的s赋值哪里有什么问题,或者是s与“管理员”、“销售员”和“采购员”比较时有问题,我用了
select case s
case "管理员"
管理员界面.Show
case "采购员"
采购员界面.Show
case "销售员"
销售员界面.Show
case "boss"
Form2.Show
case else
msgbox("no from")
end select
它只是输出"no from" 展开
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
在最后几个if比较时,是不是我的s赋值哪里有什么问题,或者是s与“管理员”、“销售员”和“采购员”比较时有问题,我用了
select case s
case "管理员"
管理员界面.Show
case "采购员"
采购员界面.Show
case "销售员"
销售员界面.Show
case "boss"
Form2.Show
case else
msgbox("no from")
end select
它只是输出"no from" 展开
6个回答
展开全部
你要先有个表存储用户名,密码和权限值。我给你段代码(用ADO控件实现的)比你的简单实用:
Private Sub Command1_Click()
Adodc1.ConnectionString = "Driver={SQL Server};Server=192.168.1.1(数据库IP或者名称);Uid=数据库用户名;pwd=数据库密码;DataBase=数据库名"
Adodc1.RecordSource = "SELECT 姓名, 编号 FROM 人事_名单 WHERE 用户名='" + Text1 + "' AND 密码='"+Text2+"'"
Adodc1.Refresh
IF Adodc1.RecordSet.EOF Then
'消息提示验证错误,清除文本框并光标设置焦点
ELSE
SELECT Case Adodc1.RecordSet.Fields("权限")
case "管理员"
管理员级界面,SHow
me.hide
case "普通用户"
普通界面.SHOW
ME.HIDE
CASE ...
......
end select
END IF
end sub
就这样就可以了,当然你不需要建这么多窗体去选择登陆,你只要部分人员显示部分人员的功能,那就在有个窗体上做手脚。登陆事件照样写,
Private Sub Command1_Click()
Adodc1.ConnectionString = "Driver={SQL Server};Server=192.168.1.1(数据库IP或者名称);Uid=数据库用户名;pwd=数据库密码;DataBase=数据库名"
Adodc1.RecordSource = "SELECT 姓名, 编号 FROM 人事_名单 WHERE 用户名='" + Text1 + "' AND 密码='"+Text2+"'"
Adodc1.Refresh
IF Adodc1.RecordSet.EOF Then
'消息提示验证错误,清除文本框并光标设置焦点
ELSE
要进入的窗体.SHOW
ME.HIDE
end if
END SUB
然后在要进入的窗体加载事件里写过程,判断隐藏在后台的登陆窗体的用户权限。在他FORMLOAD事件中这么写:
Private Sub Form_Load()
Select case 刚才的登陆窗体名.Adodc1.RecordSet.Fields("权限")
case "管理员"
要隐藏的控件名.VISIBLE=FALSE
。。。。
不可用的控件.Enable=False
.....
要调整的控件尺寸.Left=数值
。。。。。
(整个过程就是用代码对窗体进行重画)
case "...."
.....
case "...."
.....
END SELECT
end sub
Private Sub Command1_Click()
Adodc1.ConnectionString = "Driver={SQL Server};Server=192.168.1.1(数据库IP或者名称);Uid=数据库用户名;pwd=数据库密码;DataBase=数据库名"
Adodc1.RecordSource = "SELECT 姓名, 编号 FROM 人事_名单 WHERE 用户名='" + Text1 + "' AND 密码='"+Text2+"'"
Adodc1.Refresh
IF Adodc1.RecordSet.EOF Then
'消息提示验证错误,清除文本框并光标设置焦点
ELSE
SELECT Case Adodc1.RecordSet.Fields("权限")
case "管理员"
管理员级界面,SHow
me.hide
case "普通用户"
普通界面.SHOW
ME.HIDE
CASE ...
......
end select
END IF
end sub
就这样就可以了,当然你不需要建这么多窗体去选择登陆,你只要部分人员显示部分人员的功能,那就在有个窗体上做手脚。登陆事件照样写,
Private Sub Command1_Click()
Adodc1.ConnectionString = "Driver={SQL Server};Server=192.168.1.1(数据库IP或者名称);Uid=数据库用户名;pwd=数据库密码;DataBase=数据库名"
Adodc1.RecordSource = "SELECT 姓名, 编号 FROM 人事_名单 WHERE 用户名='" + Text1 + "' AND 密码='"+Text2+"'"
Adodc1.Refresh
IF Adodc1.RecordSet.EOF Then
'消息提示验证错误,清除文本框并光标设置焦点
ELSE
要进入的窗体.SHOW
ME.HIDE
end if
END SUB
然后在要进入的窗体加载事件里写过程,判断隐藏在后台的登陆窗体的用户权限。在他FORMLOAD事件中这么写:
Private Sub Form_Load()
Select case 刚才的登陆窗体名.Adodc1.RecordSet.Fields("权限")
case "管理员"
要隐藏的控件名.VISIBLE=FALSE
。。。。
不可用的控件.Enable=False
.....
要调整的控件尺寸.Left=数值
。。。。。
(整个过程就是用代码对窗体进行重画)
case "...."
.....
case "...."
.....
END SELECT
end sub
展开全部
你这里的代码里面s都没有赋值,不知道这个源码是不是全的,如果是全的,这就是问题的所在了,至于能不能用多个if语句判断权限,这个当然是可以的
追问
有啊 Dim s As String
s="select roletype from xx where name='" & Trim$(id.Text) & "' and password='" & Trim$(password.Text) & "' "
这个不是吗?如果错了,能不能帮我指出一下那里错了
追答
你在s赋值这句话下面加一句 msgbox s,看看提示框s的值是什么,这样就可以知道怎么回事了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的,这种类似于注册的程序只要认真调就可以了。。
望采纳。
望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以采用用户服务控件进行加载,IF语句可以做到
追问
可不可以具体点??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s是变量,不能执行SQL语句
用s=str.fileds("roletype")试试
用s=str.fileds("roletype")试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询