[英]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 開發人員目前不可用,因此感謝您提供一個簡單的答案。
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.