我现在做的是一个登录窗口,一个combo1,用来读取数据库中users中的用户名,
一个text1,用来输入密码。刚才的代码是form_load()中的代码,现在是按钮
command1_click()的代码,我的想法是按钮按下后,判断用户名和密码是否一致。
如果一致mainfrm.show,否则,继续输入密码。
代码如下:
Private Sub Command1_Click()
If Text1.Text = "" Or Combo1.Text = "" Then
Msg "请选择用户名或输入密码", 0 + 48, "提示"
Text1.SetFocus
End If
If Val(Text1.Text) = Asc(Combo1.Index) Then
'msgbox "正确"
mainfrm.Show
Unload Me
Else
MsgBox "密码错误", 0 + 16, "错误"
Text1.SetFocus
Exit Sub
End If
End Sub
问题有三个:
1、输入一个错误的密码,提示Msg "请选择用户名或输入密码", 0 + 48, "提示"
子程序或函数未定义。
2、输入正确的密码,提示If Val(Text1.Text) = Asc(Combo1.Index) Then
实时错误:“343”,对象不是一个数组。
3、我输入密码的时候想让输入的内容以*显示出来。现在是输入的字母和数字全部原样显示。
一个text1,用来输入密码。刚才的代码是form_load()中的代码,现在是按钮
command1_click()的代码,我的想法是按钮按下后,判断用户名和密码是否一致。
如果一致mainfrm.show,否则,继续输入密码。
代码如下:
Private Sub Command1_Click()
If Text1.Text = "" Or Combo1.Text = "" Then
Msg "请选择用户名或输入密码", 0 + 48, "提示"
Text1.SetFocus
End If
If Val(Text1.Text) = Asc(Combo1.Index) Then
'msgbox "正确"
mainfrm.Show
Unload Me
Else
MsgBox "密码错误", 0 + 16, "错误"
Text1.SetFocus
Exit Sub
End If
End Sub
问题有三个:
1、输入一个错误的密码,提示Msg "请选择用户名或输入密码", 0 + 48, "提示"
子程序或函数未定义。
2、输入正确的密码,提示If Val(Text1.Text) = Asc(Combo1.Index) Then
实时错误:“343”,对象不是一个数组。
3、我输入密码的时候想让输入的内容以*显示出来。现在是输入的字母和数字全部原样显示。
解决方案 »
- 如何根据hwnd句柄,获取hInstance句柄
- 关于逐行打印的问题
- 请大家帮忙告诉我怎么样循环读取EXCEL文件,谢谢!
- 要定飞机票的进来看看!^_^!
- crystal report 和 datareport 该选哪一个?
- 类模块中难道不能用结构体作为函数的参数吗?
- 这样的SQL如何写?
- 怎样多次改变cmd控件的caption属性,给分!!
- SOS,我的ListView不能Refresh?
- 在VB中用ADO通过ODBC连接ORACEL,数据库中字段的类型,为浮点型时,怎么表示
- Dim Exl As New Excel.Application这句话出错!救命啊,在线急等!!!
- 关于Label里面文字若隐若现的问题
问题2错在Asc(Combo1.Index),应该写成Asc(Combo1.ListIndex)
问题3应该设置PasswordChar为*还有问题1没有解决,还望各位大侠帮助。谢谢先
这是一个登陆窗体的全部代码
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Public OK As Boolean
'记录确定次数
Dim miCount As Integer
Private Sub Form_Load()
Dim sBuffer As String
Dim lSize As Long
sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
txtUserName.Text = ""
Else
txtUserName.Text = vbNullString
End If
OK = False
miCount = 0
End Sub
Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim Msgtext As String
'ToDo: create test for correct password
'check for correct password
UserName = ""
If Trim(txtUserName.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
txtSQL = "select * from 用户信息表 where user_ID = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub
————————————————————————————————————————
public username as string
这是在模板里定义的代码
我是照着这套程序写的。这套程序里用的就是Msg
会不会是有什么控件里有msg?
If Text1.Text = "" Or Combo1.Text = "" Then
MsgBox "请选择用户名或输入密码", 48, "提示" //删除0+,改msg为msgbox
Text1.SetFocus
Exit sub //退出这个过程
End If
If Trim(Text1.Text) = Trim(Combo1.Text) Then //修改
msgbox "正确"
mainfrm.Show
Unload Me
Else
MsgBox "密码错误", 16, "错误"
Text1.SetFocus
Exit Sub
End If
End Sub在要输入密码的那个文本框的PassWord属性中敲入一个*号就ok
2。你为什么要用ASC函数来做,这个本身方法就不对,况且你取combo.index干什么?
3。把那个输入密码的text控件属性的PasswordChar设置为*