1

私の目的は、ユーザーの入力に基づいて主キーを見つけることです。

テーブルの内容は次のとおりです: ユーザー ID、アカウント、パスワード。

userID は主キーと整数型として設定されます。

アカウントは varchar 型として設定されます。

パスワードは varchar 型として設定されます。

これは、ユーザー入力を検証するために現時点で入手したコードです。

Dim account As String = txtAcc.Text
    Dim password As String = txtPss.Text


    For Each Me.dr In atadap.GetData
        If dr.Item(1) = account And dr.Item(2) = password Then
            **[retrieve userID for specified data row]**
            MsgBox("Access granted!")
            Me.Hide()
            frmMenu.Show()
            Exit For
        Else
            MsgBox("Access denied!")
            txtAcc.Text = ""
            txtPss.Text = ""
            Exit For
        End If
    Next

これが私の研究で使用したリンクです: http://msdn.microsoft.com/en-us/library/y06xa2h1.aspx

しかし、まだそれを行う方法を理解できませんでした。どんな助けでも大歓迎です。よろしくお願いします。

4

2 に答える 2

0

最初のデータ行でループを終了しFor eachます。そのため、レコードがデータテーブルの一番上にない限り、結果が見つからないのです。

特定の行を確認するために各行を読む必要がある理由がわかりません。ただし、それが必要な場合は、コードを次のように変更します。

Dim account As String = txtAcc.Text
Dim password As String = txtPss.Text
Dim userFound as Boolean = False
Dim userId as Integer

For Each Me.dr In atadap.GetData
    If dr.Item(1) = account And dr.Item(2) = password Then
        userId = dr.Item(0) ' save the userId in a variable
        userFound = True
        Exit For
    End If
Next

If userFound then
    MsgBox("Access granted! Your User ID is " & userId)
    Me.Hide()
    frmMenu.Show()
Else
    MsgBox("Access denied!")
    txtAcc.Text = ""
    txtPss.Text = ""
End If
于 2013-05-04T01:15:39.903 に答える