0

私が考えることができるすべてのコンボを試してみました: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 として指し始めました。

4

1 に答える 1

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
于 2012-10-04T20:50:37.983 に答える