Почему мы получаем ошибку CInt "Invalid Use of Null"? - PullRequest
2 голосов
/ 27 марта 2019

Мы обнаруживаем ошибку сервера 500, когда в раскрывающемся поле оплаты не выбрана ни одна опция. БД принимает ноль. Файл журнала сервера выводит эту ошибку:

800a005e | Invalid_use_of_Null: _ 'CInt' HTTP / 1.1

Журнал ошибок ссылается на эту строку:

If cint(iPaymentIdRS) = cint(iPaymentId) then selPayment = selPayment & " selected "

Примечание: наш разработчик ASP в настоящее время недоступен, поэтому приветствуется упрощенный ответ.

  • Мы добавили значение "опция оплаты не выбрана" в пустое раскрывающееся поле.
  • Мы убедились, что БД принимает ноль.
  • Мы искали решение в Интернете, но не нашли его.
If sOperation = "Edit" then


    iPaymentId      = Request.Form("cboPayment") :If iPaymentId = "0" then iPaymentId = null



'**********Payment**********************

selPayment = "<option value=""0"">"

Do While rs.EOF = false
    iPaymentIdRS = rs("PaymentId")

    selPayment = selPayment & "<option value=""" & iPaymentIdRS & """"
    If cint(iPaymentIdRS) = cint(iPaymentId) then selPayment = selPayment & " selected "    
    selPayment = selPayment & ">" & rs("PaymentDesc")

    rs.MoveNext
loop

Я ожидаю, что пустое (нулевое) значение не возвращает ошибку 500, но принимается. Поле раскрытия платежа не является обязательным.

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Ошибка вызвана применением CInt к переменной nulled.

iPaymentId устанавливается равным нулю, если Request.Form("cboPayment") равно 0, а CInt(iPaymentId) пытается преобразовать iPaymentId в целое число независимо от его значения.Преобразование переменной с нулем в целое не допускается в VBscript.

Строка ...

If CInt(iPaymentIdRS) = CInt(iPaymentId) Then selPayment = selPayment & " selected "

... не должна выполняться, если iPaymentId равно нулю.Чтобы убедиться, что iPaymentId было присвоено числовое значение перед выполнением сравнения, измените его на:

If IsNumeric(iPaymentId) Then : If CInt(iPaymentIdRS) = CInt(iPaymentId) Then selPayment = selPayment & " selected "

Если iPaymentId равно нулю, сравнение не запустится и ошибка не возникнет.

0 голосов
/ 08 апреля 2019

iPaymentId = Request.Form ("cboPayment") iPaymentId = iPaymentID + 0

должен преобразовать его в целое число, чтобы значения null, text и т. Д. Передавались

...