2

当付款下拉字段未选择任何选项时,我们遇到 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

我希望空(null)值不会返回 500 错误,但会被接受。付款下拉字段不是强制性的。

4

2 回答 2

2

该错误是由应用CInt到空变量引起的。

iPaymentId如果Request.Form("cboPayment")为 0,则设置为 null,CInt(iPaymentId)然后尝试转换iPaymentId为整数,而不管其值如何。VBscript 中不允许将空变量转换为整数。

线...

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

iPaymentId...如果为 null ,则不需要运行。要在运行比较之前验证是否iPaymentId已分配了一个数值,请将其更改为:

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

如果iPaymentId为 null,则比较不会运行,也不会发生错误。

于 2019-03-27T23:06:06.993 回答
0

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

应将其转换为整数,以便 null、文本等值将通过

于 2019-04-08T20:14:30.397 回答