获取错误多步操作生成错误

时间:2014-01-28 20:01:41

标签: vba vbscript asp-classic

我正在调试一些旧代码,我在这部分上遇到错误

    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

然后我没有得到那个错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你必须明白:

  1. Nothing是一个特殊对象,表示应包含对象的变量。虽然这看起来类似于其他语言中的n / Null指针/引用,但是当你绊倒“Nothing”时,你不应该认为“Null”。
  2. 在VBScript中为变量分配一个对象(即使是这个Nothing)需要Set
  3. VBScript中的Null是一个特殊值,表示应包含值的变量。这就像SQL中的Null。
  4. (还有另一个特殊值表示VBScript中的变量内容不太合适:空 - 它与操作/比较中的Null不同。)
  5. 在VBScript中没有Set的情况下为变量赋值。
  6. 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问题。