ASP/VBScript"陷入困境"

pfu*_*unk 9 vbscript decimal asp-classic

我支持/增强了用Classic ASP/VBScript编写的Web应用程序.自从我使用日常生产能力以来已经过去了大约10年.我刚刚遇到了一个我认为是"陷阱"的问题,并且想知道其他人是否有类似我应该学会了解的事情.

我的问题:
我必须将SQL表中的列从float转换为decimal.事实证明,十进制不是vbscript中真正支持(或支持得很好)的类型.所以下面的代码:

Dim var1, var2

var1 = rs("DecimalField1").Value
var2 = rs("DecimalField2").Value

If (var1 <> var2) Then
    'Do Something'
End If
Run Code Online (Sandbox Code Playgroud)

会在线路上出现类型不匹配错误:

If (var1 <> var2) Then
Run Code Online (Sandbox Code Playgroud)

经过多次搜索,我发现:

var1 = CDBL(rs("DecimalField1").Value)
var2 = CDBL(rs("DecimalField2").Value)
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.但这似乎并不是一个显而易见的事情,我花了一段时间才弄清楚为什么我在那条线上遇到类型不匹配.

所以我对每个人的问题是,你遇到过这样的其他小问题吗?ASP/vbscript中有哪些东西你会被认为是"陷阱",我应该注意什么?

Ano*_*nJr 10

在我之后重复:所有优秀的VB程序员都使用Option Explicit

它会让你不小心声明一个新的变量并使用它 - 从而抛弃你正在做的事情.

除此之外,它取决于你在做什么.


JB *_*ing 8

当你看到以下行时要小心:

On Error Resume Next
Run Code Online (Sandbox Code Playgroud)

这将是我使用经典ASP的谨慎.


Mar*_*ade 2

确保您使用Set对象引用:

 Dim rs : Set rs = CreateObject("ADODB.Recordset");
Run Code Online (Sandbox Code Playgroud)

如果不这样做,您将获得无效的变量引用或默认属性

 Dim field      : Set field  = rs(0)
 Dim fieldValue : fieldValue = rs(0) 'Same as field.Value
Run Code Online (Sandbox Code Playgroud)