我收到错误Microsoft VBScript运行时错误'800a0009'下标超出范围:'j'

时间:2016-12-20 19:24:16

标签: vbscript asp-classic

我正在尝试在经典asp中插入数据,但会收到以下错误:

  

Microsoft VBScript运行时错误'800a0009'下标超出范围:'j'

作为参考,我附上了我的代码。我是经典asp

的新手
IF Len(FixString(Request.Form("txtModelTypeID"))) >= 1 AND cboSlab = "SlabCombineSeries" Then

                arrModelTypeID = split(trim(Request.Form("txtModelTypeID")),",")
                arrModelID = split(trim(Request.Form("txtModelID")),",")
                arrSlab = split(trim(Request.Form("txtSlab")),",")
                arrAmount = split(trim(Request.Form("txtAmount")),",")
                arrSF = split(trim(Request.Form("txtSF")),",")
                arrNonSF = split(trim(Request.Form("txtNonSF")),",")
                arrPMY = split(trim(Request.Form("txtPMY")),",")
                arrCMY = split(trim(Request.Form("txtCMY")),",")
                arrPIY = split(trim(Request.Form("txtPIY")),",")
                arrCIY = split(trim(Request.Form("txtCIY")),",")
                arrTradeIn = split(trim(Request.Form("txtTradeIn")),",")
                arrLoyalty = split(trim(Request.Form("txtLoyalty")),",")
                arrSpecial1 = split(trim(Request.Form("txtSpecial1")),",")
                arrSpecial2 = split(trim(Request.Form("txtSpecial2")),",")
                arrSpecial3 = split(trim(Request.Form("txtSpecial3")),",")

    arrkeydiscount = split(trim(Request.Form("txtkeydiscount")),",")
    arrsme = split(trim(Request.Form("txtsme")),",")
                if ubound(arrModelTypeID) = 0 Then

                elseif ubound(arrModelTypeID) > 0 Then
                    FOR j = 0 to ubound(arrModelTypeID)

                        if NOT ISNumeric(TRIM(arrSlab(j))) Then Slab = 0 else Slab = TRIM(arrSlab(j)) end if
                        if NOT ISNumeric(TRIM(arrAmount(j))) Then Amount = 0 else Amount = TRIM(arrAmount(j))  end if
                        if NOT ISNumeric(TRIM(arrSF(j))) Then SF = 0 else SF = TRIM(arrSF(j))  end if
                        if NOT ISNumeric(TRIM(arrNonSF(j))) Then NonSF = 0 else NonSF = TRIM(arrNonSF(j))  end if
                        if NOT ISNumeric(TRIM(arrPMY(j))) Then PMY = 0 else PMY = TRIM(arrPMY(j))  end if
                        if NOT ISNumeric(TRIM(arrCMY(j))) Then CMY = 0 else CMY = TRIM(arrCMY(j))  end if
                        if NOT ISNumeric(TRIM(arrPIY(j))) Then PIY = 0 else PIY = TRIM(arrPIY(j))  end if
                        if NOT ISNumeric(TRIM(arrCIY(j))) Then CIY = 0 else CIY = TRIM(arrCIY(j))  end if
                        if NOT ISNumeric(TRIM(arrTradeIn(j))) Then TradeIn = 0 else TradeIn = TRIM(arrTradeIn(j))  end if
                        if NOT ISNumeric(TRIM(arrLoyalty(j))) Then Loyalty = 0 else Loyalty = TRIM(arrLoyalty(j))  end if
                        if NOT ISNumeric(TRIM(arrSpecial1(j))) Then Special1 = 0 else Special1 = TRIM(arrSpecial1(j))  end if
                        if NOT ISNumeric(TRIM(arrSpecial2(j))) Then Special2 = 0 else Special2 = TRIM(arrSpecial2(j))  end if
                        if NOT ISNumeric(TRIM(arrSpecial3(j))) Then Special3 = 0 else Special3 = TRIM(arrSpecial3(j))  end if
if NOT ISNumeric(TRIM(arrkeydiscount (j))) Then Key = 0 else Key = TRIM(arrkeydiscount(j))  end if
    if NOT ISNumeric(TRIM(arrsme (j))) Then Sme = 0 else Sme = TRIM(arrsme(j))  end if

                        SQL = SQL & "INSERT INTO demo_Item ( " &_
                                " iSPCMasterID, iModelID, vModelName, vModelCode, iSlab, mAmount, " &_
                                " mSF, mNonSF, mPMY, mCMY, mPIY, mCIY, mTradeIn, mLoyalty, " &_
                                " mSpecial1, mSpecial2,key_acc,sme, mSpecial3, dCreateDate, iSeq) " &_
                                " SELECT @NewID, i_modelid, vch_modelname, modelcode, " &_
                                " " & Slab & ", " &_
                                " " & Amount & ", " &_
                                " " & SF & ", " &_
                                " " & NonSF & ", " &_
                                " " & PMY & ", " &_
                                " " & CMY & ", " &_
                                " " & PIY & ", " &_
                                " " & CIY & ", " &_
                                " " & TradeIn & ", " &_
                                " " & Loyalty & ", " &_
                                " " & Special1 & ", " &_
                                " " & Special2 & ", " &_
    " " & Key & ", " &_
    " " & Sme & ", " &_
                                " " & Special3 & " , getdate(), " & j + 1 &_
                                " FROM ltr_or_models WHERE CAST(i_modeltypeid as varchar(20)) = '" & trim(arrModelTypeID(j)) &  "' " 
                    next
                end if

1 个答案:

答案 0 :(得分:1)

您正尝试使用单个计数器同时循环遍历多个阵列。 I.E.您正在使用arrModelTypeID数组的上一级设置j计数器的结尾,然后期望剩余的和单独的数组(arrSlab,arrAmount等)使用相同的计数器。

假设所有新创建的数组中的数据彼此相同。在设置其指定变量之前,请尝试检查每个数组记录的值。

E.G。 CHANGE

if NOT ISNumeric(TRIM(arrSlab(j))) Then Slab = 0 else Slab = TRIM(arrSlab(j)) end if

If arrSlab(j) <> "" Then
if NOT ISNumeric(TRIM(arrSlab(j))) Then Slab = 0 else Slab = TRIM(arrSlab(j)) end if
End If