在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"
展开
 我来答
创作者zUzVB1Sl31
2012-06-19 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部
你要先有个表存储用户名,密码和权限值。我给你段代码(用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
KSPprince
2012-06-18 · TA获得超过1028个赞
知道小有建树答主
回答量:2820
采纳率:33%
帮助的人:379万
展开全部
你这里的代码里面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的值是什么,这样就可以知道怎么回事了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a海蓝
2012-06-18 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:101万
展开全部
可以的,这种类似于注册的程序只要认真调就可以了。。
望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
empty_meng
2012-06-18 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:85.7万
展开全部
可以采用用户服务控件进行加载,IF语句可以做到
追问
可不可以具体点??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9e844a329
2012-06-18 · 超过30用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:63.9万
展开全部
s是变量,不能执行SQL语句
用s=str.fileds("roletype")试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友44d8da7
2012-06-18 · TA获得超过151个赞
知道答主
回答量:198
采纳率:0%
帮助的人:80.1万
展开全部
可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式