我有一个包含2个文本框,2个标签和登录按钮的用户表单。
在我的Excel工作表上,我有一个包含id,name,pin和balance的数据库。
问题是每当我点击登录按钮时,我的ID文本框将其值重置为0,但我的pin文本框工作正常!
我将粘贴完整的代码:
Dim ID As Integer
Dim PIN As Integer
Dim PINField As String
Dim Balance As Double
Dim Attempts As Integer
Dim BalanceField As String
Private Sub btnLogin_Click()
txtID.Text = ID
Call SetId
Call Authenticate
End Sub
Sub Authenticate()
If txtPin.Text = PIN Then
Call Welcome
ElseIf Attempts > 3 Then
Call Bye
Else
lblWelcome.Caption = "Wrong Pin"
lblWelcome.ForeColor = RGB(255, 0, 0)
Attempts = Attempts + 1
End If
End Sub
Sub SetId()
PINField = "C" & Str(ID)
PINField = Replace(PINField, " ", "")
MsgBox (PINField)
BalanceField = "D" & Str(ID)
BalanceField = Replace(BalanceField, " ", "")
MsgBox (BalanceField)
End Sub
Sub Welcome()
MsgBox ("Login Successful. Welcome")
End Sub
Sub Bye()
MsgBox ("Max Pin Attempts reached. Contact Your Bank")
Unload frmLogin
End Sub
答案 0 :(得分:0)
这样做的原因是因为您使用的是没有值的变量。由于它是Integer
,因此返回0.
我猜你可能真的想拥有ID = txtID.Text
- 也就是说,取txtID文本框的值并将值存储在ID变量中。
这可能会出错,因为文本框的Text
属性是String。您需要使用ID = CInt(txtID.Text)
。您还应该进行一些检查以确保txtID.Text在赋值之前计算为整数。
答案 1 :(得分:0)
请确保代码中未显示的txtID中没有reset
。看看你的代码,它没有说明你如何设置ID
或PIN
的值......你说它对PIN
工作正常,所以它让我非常好奇...
可能是尼克指出的情况,因为Form
textboxes
允许人们输入ID
和PIN
。然后你将它与PIN
。但是你在比较什么呢?正如你所说,你在表格中有一种数据库结构。您需要协助ID
和PIN
使用它。
以下是我对工作表的可视化,这是我最好的盲目猜测:
用户需要通过表单输入值txtID
。该数字实际上是包含相关cell number
的列C
的{{1}}。然后将该PIN与txtPIN值进行比较。接下来根据PIN
返回balance
列中的D
。
试试这个:
PIN