私が考えることができるすべてのコンボを試してみました:String.Empty、IsDBNull。
selectPONumber は、「selectPONumber: [' + JSON.stringify('') + ']」から「ByVal selectPONumber() As String」に渡されます。
StackTrace は、この VB の 2 行目を指します
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
よろしくお願いします!
アップデート
すべての長さをカウントに置き換え、トランスポーターのアドバイスを受けました。現在、「for」行で同じエラーが発生します。If 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
解決
トランスポーターのソリューションは正しいです。コードの他の場所で、愚かにも通常の文字列を配列として扱いました。関数の残りの部分全体を indexoutofbounds として指し始めました。