帮我看看这段VB代码哪里不对啊.

来源:百度知道 编辑:UC知道 时间:2024/06/19 18:08:36
要执行的操作内容是frmMain窗体在退出的时候加密码判断.密码正确,窗体退出,不正确,则主窗体继续显示.
Private Sub Form_Unload(Cancel As Integer)
frmPassword.Show 1
End Sub

密码窗体的代码
Private Sub cmdOK_Click()
Dim rec As Recordset
Set rec = g_Conn.Execute("SELECT UserPasw FROM [UserD] where UserName='管理员'") '注册将数据表User加上中括号
If rec.EOF = False Then
If rec(0).Value = trim(txtPassword.Text) Then
Unload frmPassword
Unload frmMain
Else
MsgBox "密码不正确!", 0 + 16, "山西华圣原料库称重系统 "
frmPassword.Hide
frmMain.Show
End If
End If
End Sub
蓝色精灵鱼(290119945) 15:54:04
现在的情况是 密码不正确的话,主窗体也关闭,
风云(69736257) 15:54:23

狗旺*王*亡*?(493044552) 15:54:54
If rec.EOF = False Then
If rec(0).Value = trim(txtPassword.Text) Then
Unload frmPassword
Unload frmMain
Else
MsgBox "密码不正确!", 0 + 16, "山西华圣原

只给你说重点 其他的都不影响你的功能:
Private Sub Form_Unload(Cancel As Integer)
frmPassword.Show 1 ‘无论Frmpassword窗体怎么写代码,它都始终会结束,结束了 也就该执行 End sub 了 ,所以就关闭了。
End Sub

正确的用法应该是:frmpassword窗口中应该返回一个逻辑变量(密码通过时 真,否则 假)。
然后改成:
Private Sub Form_Unload(Cancel As Integer)
frmPassword.Show 1
if not 逻辑变量 then cancel=1'有了这句在真正退出关闭。
End Sub

至于这个逻辑变量怎么设置,我就不多说了吧 这个很简单了,公共变量就可以了。


Private Sub Form_Unload(Cancel As Integer)
或者在
Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer)

中修改Cancel参数的值。

cancel 一个整数。将此参数设定为除 0 以外的任何值,并阻止该窗体和应用程序的关闭 。