1

データの最初の行だけでなく、それ以上を表示するためのループを取得するのに問題があります。参照されるデータセット関数は、必要なすべての行を問題なく取得するため、問題はコードにあるはずです。

Dim dtLogin As System.Data.DataTable
    Dim userDetails As New dsMembersTableAdapters.mi_membersTableAdapter
    Dim rowsLogin As System.Data.DataRow

    'Fill datatable using method from dataset
    dtLogin = userDetails.GetUserData()

    'Find cotrols hidden in Login View
    Dim user As String = txtUser.Text
    Dim pass As String = txtPass.Text

    'Search all users
    For Each rowsLogin In dtLogin.Rows
        'Find Username Entered
        If user = dtLogin.Rows.Item(0).Item(1) Then
            'Checks users password matches
            If pass = dtLogin.Rows.Item(0).Item(2) Then
                If dtLogin.Rows.Item(0).Item(6) = 1 Then
                    'Log User In
                    FormsAuthentication.RedirectFromLoginPage(dtLogin.Rows.Item(0).Item(1), True)
                Else
                    'Account Not Active Message
                    lblValidation.Text = "There is a problem with your account, please contact the website administration"
                End If
            Else
                'Incorrect Password Message
                lblValidation.Text = "Incorrect Password"
            End If
        Else
            'No User in DB Message
            lblValidation.Text = "No User Found" + dtLogin.Rows.Item(0).Item(1)
        End If
    Next

誰かが助けてくれるか、私を直接rihgtに向けることができれば、それは素晴らしいことです!前もって感謝します :)

4

3 に答える 3

1

使用するときは、項目For Each rowsLogin In dtLogin.Rowsごとに変数に割り当てるようにコンパイラーに指示します。dtLogin.RowsrowsLogin

したがって、毎回、ループ内で、のdtLogin.Rows.Item(0).Item(2)ように使用するのをやめますIf pass = dtLogin.Rows.Item(0).Item(2) Thenが、むしろIf pass = rowsLogin.Item(0).Item(2) Then

于 2013-02-12T01:56:44.910 に答える
0
dim bUserFound as boolean = false       
For Each rowsLogin In dtLogin.Rows
            'Find Username Entered
            If user = rowsLogin(1) Then
bUserFound = true
                'Checks users password matches
                If pass = rowsLogin(2) Then
                    If rowsLogin(6) = 1 Then
                        'Log User In
                        FormsAuthentication.RedirectFromLoginPage(rowsLogin(1), True)
                    Else
                        'Account Not Active Message
                        lblValidation.Text = "There is a problem with your account, please contact the website administration"
                    End If
                Else
                    'Incorrect Password Message
                    lblValidation.Text = "Incorrect Password"
                End If
            Else
                'No User in DB Message
               ' lblValidation.Text = "No User Found" + rowsLogin(1)

            End If
        Next 

if not bUserFound then
lblValidation.Text = "No User Found"
end if

より明確なコードを得るには、rowsLogin(1)の代わりにrowsLogin( "USER_NAME")、rowsLogin(2)の代わりにrowsLogin( "USER_PWD")などを使用する必要があります。

于 2013-02-12T10:49:32.843 に答える
0

dtLogin.Rows.Item(0).Item(1)--Rows.Itemの後の(0)は、行のコレクション内のインデックスを参照しているため、常に最初の行を見ています。

dtLogin.Rows.Item(0).Item(1)ループでなどを使用する代わりに、を使用しますrowsLogin.Item(1)

于 2013-02-12T01:57:23.263 に答える