For..Next不使用vb​​.net中的dataset列

时间:2018-01-26 04:47:17

标签: vb.net visual-studio-2010

'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时则不会。

1 个答案:

答案 0 :(得分:0)

该代码只有在与最后一行匹配时才会起作用。这是因为,如果您找到匹配项,则继续测试剩余的行并且它们不匹配,因此您将清除之前设置的错误消息。你需要做的是找到匹配时停止。这是Exit For的用途。