2012-06-26 4 views
0

데이터베이스에서 DataTable을 구축했습니다. 그런 다음 행을 반복하면서 문자열에 액세스하려고 시도하지만 값은 문자열의 각 문자로 반환됩니다.왜 문자열이 char을 반환합니까?

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 자의 문자열이며 반환 값은 한 번에 한 글자 씩입니다. 루프는 전체 값을 표시하는 것이 아니라 배열로 문자열의 개별 문자를 순환하는 것처럼 보입니다. 이는 내가 원하는 것입니다. 그냥 도움과 조언을 찾고.

감사합니다. RL.

답변

2

당신은 특별히 Trap_Code의 값을 통해 루프를 요청했습니다하십시오 단일 값을 가져 오는 것

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

(theseRows 단지 하나의 행, 기억 - 당신은 변수 이름을 변경할 수 있습니다)하는 문자열입니다. 그런 다음 문자열을 일련의 문자로 반복 할 수 있습니다.

행을 이미 반복하고있는 것을 감안할 때 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 
+0

예, 그 이유에 대한 설명 주셔서 감사합니다. –

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 
관련 문제