'validatation begin
'Validate User ID
Private Sub txtUid_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUid.LostFocus
Try
Dim sel As String
sel = "SELECT uid FROM user_master"
Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\RSMS_DB.mdf;Integrated Security=True;User Instance=True")
Dim da As New SqlDataAdapter(sel, cnn)
Dim ds As New DataSet()
da.Fill(ds)
Dim count As Integer = ds.Tables(0).Rows.Count
For i As Integer = 0 To count - 1
If ds.Tables(0).Rows(i)("uid") = txtUid.Text Then
ErrorProviderUidExist.SetError(txtUid, "User ID already exists! Please Try a Unique User ID!")
Else
ErrorProviderUidExist.SetError(txtUid, "")
ErrorProviderUidExist.Clear()
End If
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Database Failure!")
End Try
If txtUid.Text = Nothing Then
ErrorProvider1.SetError(txtUid, "User ID Required!")
Else
ErrorProvider1.SetError(txtUid, "")
ErrorProvider1.Clear()
End If
End Sub
我在vb.net中编写了此代码,以使用错误提供程序生成警告。如果用户输入已经采用的用户ID,则会生成警告。 在数据库中,我创建了三个用户ID,分别为1,2和3.
我的问题是当我在测试时输入1时,会产生错误,但是当我输入2或3时则不会。
答案 0 :(得分:0)
该代码只有在与最后一行匹配时才会起作用。这是因为,如果您找到匹配项,则继续测试剩余的行并且它们不匹配,因此您将清除之前设置的错误消息。你需要做的是找到匹配时停止。这是Exit For
的用途。