2012-10-04 2 views
0

모든 조합을 시도해 보았습니다. String.Empty, IsDBNull. "selectPONumber : '+ JSON.stringify (' ') +']"WebMethod에 빈 문자열 배열을 전달할 때 IndexOutOfRangeException이 발생했습니다.

selectPONumber은 행 "으로 문자열로 ByVal의 selectPONumber()"로 전달된다

이 VB 번째 라인 스택 트레이스 포인트

VB 사전에

If Not IsDBNull(selectPONumber) Then 
     If selectPONumber.Length > 1 Then 
      qry = qry + "and (" 
      For u As Integer = 0 To selectPONumber.Length - 1 
       If u <> selectPONumber.Length Then 
        qry = qry + "and B.PONumber = '" & selectPONumber(u) & "' or " 
       Else 
        qry = qry + "and B.PONumber = '" & selectPONumber(u) & "'" 
       End If 
      Next 
      qry = qry + ") " 
     Else 
      qry = qry + "and B.PONumber = '" & selectPONumber(0) & "' " 
     End If 
    End If 

많은 감사합니다!

업데이트

카운트 모든 길이를 대체하고, tranceporter의 조언을했다. 이제 "for"줄에 같은 오류가 나타납니다. SelectPONumber.Length> 1 일 경우 어떻게됩니까?

업데이트 코드

If selectPONumber IsNot Nothing AndAlso selectPONumber.Count > 1 Then 
      qry = qry + "and (" 
      For u As Integer = 0 To (selectPONumber.Count - 1) 
       If u <> selectPONumber.Count Then 
        qry = qry + "B.PONumber = '" & selectPONumber(u) & "' or " 
       Else 
        qry = qry + "B.PONumber = '" & selectPONumber(u) & "'" 
       End If 
      Next 
      qry = qry + ") " 
    ElseIf selectPONumber(0) <> "" Then 
     qry = qry + "and B.PONumber = '" & selectPONumber(0) & "' " 
    End If 

솔루션

tranceporter의 솔루션은 올바른 것입니다. 나는 어딘가에 배열로 정규 문자열을 처리했다. 함수의 나머지 부분을 indexoutofbound로 가리 키기 시작했습니다. (당신이 이미하지 않은 경우)이 사용

답변

1

시도

If selectPONumber IsNot Nothing Then 
    If selectPONumber.Count > 0 Then 
     qry = qry + "and (" 
     For u As Integer = 0 To selectPONumber.Count - 1 
      If u <> selectPONumber.Count Then 
       qry = qry + "B.PONumber = '" & selectPONumber(u) & "' or " 
      Else 
       qry = qry + "B.PONumber = '" & selectPONumber(u) & "'" 
      End If 
     Next 
     qry = qry + ") " 
    Else 
     qry = qry + "and B.PONumber = '" & selectPONumber(0) & "' " 
    End If 
End If 
+0

감사 - 당신,하지만 지금은 "에 대한"라인 아래로 이동합니다. –

+0

그냥 selectPONumber의 카운트 값을보십시오. 이게 뭐야? 색인은 1을 기준으로 1을 기준으로합니까? SelectPONumber (0) 대신 selectPONumber (1)를 시도하면 어떻게됩니까? – tranceporter

+0

재미있게 물어보십시오. JSON에서 그 값을 출력했으며, 길이와 수 모두 1로 표시됩니다. .count> 1 테스트가 어떻게 진행되는지 궁금합니다. selectPONumber (1)를 시도하면 어떻게되는지 보겠습니다. 다시 한번 감사드립니다. –