我正在调试一些旧代码,我在这部分上遇到错误
rs("country code").value = NullIfBlank(Request.Form("country code"))
错误显示“多步操作产生错误。检查每个状态值。”
我试图了解NullIfBlank的含义,据我所知,我试图用这种方式重写代码:
If rs("country code").value Is Nothing Then
rs("country code").value = Request.Form("country code")
End If
现在我在rs(“国家代码”)。值中有值时没有收到错误,但是我在这个语句中出错了
rs("country code").value = Request.Form("country code")
我的整个代码看起来像这样
if request.form("submit")="Save Changes " or request.form("submit")="Save Changes to a New " then%>
<%
id = request.form("id")
if id is nothing then id = ""
cmd1.ActiveConnection = strconn
cmd1.CommandText = "FormBlankSpecial"
cmd1.CommandType = adCmdStoredProc
cmd1.Parameters.Append (cmd.CreateParameter("@id", adVarChar, adParamInput, 50, id))
rs.CursorLocation = adUseClient
rs.LockType = adLockPessimistic
rs.open (cmd1)
if cmd1.Parameters.count > 0 then
cmd1.Parameters.delete("@id")
end if
if request.form("submit")="Save Changes to a New" then
rs.addnew
rsmax.open ("FormBlankMax", strconn, adOpenKeyset, adLockPessimistic, adCmdStoredProc)
rs("idx").value=(1*zeroif(rsmax("maxid").value))+1
end if
' rs("country code").value = NullIfBlank(Request.Form("country code"))
' I keep getting error here
If rs("country code").value Is Nothing Then
rs("country code").value = Request.Form("country code")
End If
下面是isnull函数
Public Shared Function NullIfBlank(ByVal Str)
On Error Resume Next
NullIfBlank = ""
If Str = "" Then NullIfBlank = DBNull.Value Else NullIfBlank = Str
Return NullIfBlank
End Function
并且sql存储过程看起来像这样
选择isnull([国家代码],'')作为[国家代码] 来自testTable
当我在sql语句中这样做时
选择[国家代码]作为[国家代码] 来自testTable
然后我没有得到那个错误。
任何帮助将不胜感激。
答案 0 :(得分:0)
你必须明白:
Nothing
是一个特殊对象,表示应包含对象的变量不。虽然这看起来类似于其他语言中的n / Null指针/引用,但是当你绊倒“Nothing”时,你不应该认为“Null”。Set
。Set
的情况下为变量赋值。Vour:
id = request.form("id")
if id is nothing then id = ""
似乎将表单元素中的字符串值读入id
。然后id
不是对象,无法与Nothing对象进行比较。或者您想要访问元素/对象 - 然后您必须使用
Set id = request.form("id")
您
If rs("country code").value Is Nothing Then
尝试检查Nothing对象的数据库列值(可能是字符串)。根据您的列定义,该字段可能包含Null - 那么您必须检查Null(不 Nothing):
If IsNull( rs("country code").value) Then
您应该发布NullIfBlank()
函数,因为“多步”错误通常指向SQL问题。