Asp classic 代码赢得';使用if语句在记录集返回后执行

Asp classic 代码赢得';使用if语句在记录集返回后执行,asp-classic,recordset,Asp Classic,Recordset,有人能帮我解释一下下面的问题吗 在SQL查询中,我从另一个表中获取有关id出现的信息。 这里一切正常,我在下面展示一个关键片段 set rsRecordCount = Cn.execute(mysql_query) dim cnt cnt = rsRecordCount("TotalRecords") response.write("cnt " & cnt & " id = " & id & "<br>") rs

有人能帮我解释一下下面的问题吗

在SQL查询中,我从另一个表中获取有关id出现的信息。 这里一切正常,我在下面展示一个关键片段

    set rsRecordCount = Cn.execute(mysql_query)
    dim cnt
    cnt = rsRecordCount("TotalRecords")
    response.write("cnt " & cnt & " id = " & id & "<br>")
    rsRecordCount.Close
    set rsRecordCount = nothing
set rsRecordCount=Cn.execute(mysql\u查询)
暗碳纳米管
cnt=rsRecordCount(“TotalRecords”)
响应。写入(“cnt”&cnt&“id=“&id&”
”) rsRecordCount,关闭 设置rsRecordCount=nothing
因此,通过response.write,我可以获得有关事件的信息。问题出现了 当我想测试cnt变量时

if cnt = 0 then
        response.write(".....<br>")
end if
如果cnt=0,则
响应。写入(“…
”) 如果结束
只是一个简单的测试,代码在这里停止执行,我想知道为什么?我最初认为cnt可能像指向记录集的指针一样工作,当将其设置为null时,它将是错误或未定义的行为?但是我试着注释掉了。关闭并=无。问题仍然存在

如果我使用另一个变量,它实际上就是prolem的cnt,代码会再次工作

if blablabla = 0 then
  response.write("it works now<br>")
end if
如果bla=0,则
回答。写(“它现在可以工作了
”) 如果结束
我怎么避开这个/我错过了什么

谢谢

我首先想到cnt可能像指向记录集的指针一样工作

你的假设是对的,但不是100%准确。Recordset对象的默认属性返回字段对象,即在此行之后:

cnt = rsRecordCount("TotalRecords")
变量
cnt
实际上是一个字段对象。现在你会问,为什么这句话“有效”

与上面的Response.Write一样,这个函数首先转换为String,然后转换为Long。利润

  • 取实际值,而不是字段对象:

    cnt = rsRecordCount.Fields("TotalRecords").Value
    

  • 就我个人而言,我认为第二种方式更优雅、更具可读性。两种方法都有效。祝你好运

    如果你做了
    如果CInt(cnt)=0,那么有什么区别吗
    ?@SearchAndResQ-回答一下,我会接受:-)。。很抱歉,我不知道asp中存在类型转换或是必需的,因为人们甚至不必对变量进行模糊处理。我最好不要回答这个问题,因为我不知道为什么需要这种转换。当你做响应时,可能与连接有关。写吗?你能在没有回应的情况下试一试吗?写一篇文章和演员阵容?“我只是想知道,”安德烈斯克说,“演员阵容才有帮助。”。在没有回应的情况下尝试了concat。还有打字。问题又来了!。谢谢谢谢-稍后我将对此进行更多研究,但我对建议2进行了测试,但它没有起作用。也许我遗漏了什么?@java数据库中字段的类型是什么?
    
    cnt = CLng(rsRecordCount("TotalRecords"))
    
    cnt = rsRecordCount.Fields("TotalRecords").Value