经典Asp错误,没有错误消息

时间:2011-04-08 00:19:28

标签: sql-server-2008 asp-classic

当我循环浏览页面上显示它的记录集时,只要它点击:

posLeft = Cstr((Cint(rs("stoneleft"))*0.31))

它停止阅读数据库,所有其他rs("")都不起作用。

我这样做错了吗? stoneleft字段是一个varchar,它将它转换为整数(我尝试的测试记录为'100')然后乘以0.31然后转换为字符串,以便我可以在页面上显示它。

3 个答案:

答案 0 :(得分:1)

是的,cASP中相当常见的问题,它自2000年以来一直存在。这是一个数据库驱动程序问题,特别是你的提供程序。在您的连接字符串中,尝试更改为以下内容。如果你不能做,请执行@stealthyninja的建议。

问题

driver={SQL Server};

尝试(而不是上述)

driver=SQLNCLI;

答案 1 :(得分:0)

你可能从db获得了null或空值。

试试这个:

If Len(rs("stoneleft") & "") > 0 Then 
  posLeft = Cstr((Cint(rs("stoneleft"))*0.31))
End If

这相当于:

If IsNull(rs("stoneleft")) Or IsEmpty(rs("stoneleft")) Then 
  ' don't do stuff!
End If

答案 2 :(得分:0)

@Grant unwin:您应该始终将行值分配给变量,这样您就可以进入数据库以获取数据,然后在开始处理之前再次离开。

Dim stoneLeft, posLeft

stoneLeft = rs("stoneleft")

If NOT IsNumeric(stoneLeft) OR IsNull(stoneLeft) Then
    stoneLeft = 0
Else
    stoneLeft = CInt(stoneLeft)
End If

posLeft = stoneLeft * 0.31