0

データベースからDataTableを作成しました。次に、行をループして文字列にアクセスしようとしていますが、値は文字列の各文字として返されます。

    For Each theseRows In DisplayForm.MainTab.Rows
        If theseRows.Item("Last_Name") = userLast And theseRows.Item("First_Name") = userFirst Then
            For Each RGCode As String In theseRows.Item("Trap_Code")
                MessageBox.Show(RGCode)
                                Next
        End If
    Next

Trap_Code値は2文字または3文字の文字列であり、戻り値は一度に1文字ずつです。ループは、値全体を表示するのではなく、文字列の個々の文字を配列として循環しているように見えます。これは私が望んでいたことです。助けとアドバイスを探しているだけです。

ありがとう、RL。

4

2 に答える 2

2

あなたは特にTrap_Code:の値をループするように要求しました

For Each RGCode As String In theseRows.Item("Trap_Code")

これは、文字列である単一の値(theseRows1行だけです。覚えておいてください。変数名を変更することもできます)をフェッチしています。次に、文字列として、可能な唯一の方法で文字列を反復処理します。

Ifすでに行をループしているとすると、ステートメント内でループしているのはなぜですか?私はあなたがただ欲しいと思う:

For Each theseRows In DisplayForm.MainTab.Rows
    If theseRows.Item("Last_Name") = userLast And theseRows.Item("First_Name") = userFirst Then
        MessageBox.Show(theseRows.Item("Trap_Code"))
    End If
Next

または、単一行の名前を適切に設定します(スクロールを避けるためにインデントを少なくします)。

For Each row In DisplayForm.MainTab.Rows
  If row.Item("Last_Name") = userLast And row.Item("First_Name") = userFirst Then
    MessageBox.Show(row.Item("Trap_Code"))
  End If
Next
于 2012-06-26T18:49:16.703 に答える
0

各ループの内側を削除するだけでよいと思います。

For Each theseRows In DisplayForm.MainTab.Rows
    If theseRows.Item("Last_Name") = userLast And theseRows.Item("First_Name") = userFirst Then
            MessageBox.Show(theseRows.Item("Trap_Code"))
    End If
Next
于 2012-06-26T18:50:27.257 に答える