2016-12-20 9 views
-2

Я пытаюсь вставить данные в классическом жереха, но получить следующее сообщение об ошибке:Я получаю ошибку Microsoft VBScript ошибка времени выполнения «800a0009» Подстрочный из диапазона: «J»

Microsoft VBScript runtime error '800a0009' Subscript out of range: '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 
+0

Hi - вы знаете, что вы можете получить ASP сказать вам точную линию и характер ошибки? Это намного лучше, чем охота на ошибку в плотном блоке кода, подобном тому, который вы опубликовали. Google для 'server.getlasterror' и см. Сайты, например http://www.dylanbeattie.net/2008/12/fun-with-servergetlasterror-in-classic.html, в частности, о сопоставлении 500 ошибок с обработчиком ошибок клиента , Если вам нужно отлаживать ASP, это бесценно. –

+0

Форматирование этого сообщения ужасно - отредактируйте ваше сообщение и отформатируйте свой код. – Paul

ответ

1

Вы пытаетесь объединить несколько массивов одновременно с помощью одного счетчика. И.Е. Вы устанавливаете конец счетчика j, используя верхний уровень массива arrModelTypeID, а затем ожидаете, что остальные и отдельные массивы (arrSlab, arrAmount и т. Д.) Будут использовать один и тот же счетчик.

Предполагая, что данные во всех ваших вновь созданных массивах упорядочены одинаково друг с другом. Попробуйте проверить каждую запись массива на значение перед установкой назначенной переменной.

E.G. ИЗМЕНЕНИЕ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^