簡體   English   中英

為什么我們會收到 CInt“Invalid Use of Null”錯誤?

[英]Why do we get a CInt "Invalid Use of Null" Error?

當沒有為付款下拉字段選擇選項時,我們遇到了 500 服務器錯誤。 數據庫接受空值。 服務器日志文件輸出此錯誤:

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

錯誤日志是指這一行:

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

注意:我們的 ASP 開發人員目前不可用,因此感謝您提供一個簡單的答案。

  • 我們在空的下拉字段中添加了值“未選擇付款選項”。
  • 我們確保 DB 接受 null。
  • 我們在網上搜索了解決方案,但沒有找到。
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 錯誤,但會被接受。 付款下拉字段不是強制性的。

該錯誤是由將CInt應用於空變量引起的。

如果Request.Form("cboPayment")為 0,則iPaymentId被設置為 null,然后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為空,則不會運行比較並且不會發生錯誤。

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

應該將其轉換為整數,以便 null、text 等值將通過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM