我遇到了一个奇怪的问题,即从数据库获取数据并使用VBScript for ASP将其转换为正确的类型。VBScript VarType函数给出奇怪的值
我使用下面的函数检索的记录:
Public Function vfuncGetRS(strQuery)
'Returns a disconnected paging capable recordset
'Note - Non Windows servers don't support disconnected recordsets so you'll always get a connected recordset on
' a non Windows server!
On Error Resume Next
Err.Clear
Dim objData
Set objData = Server.CreateObject("ADODB.Recordset")
objData.CursorLocation = adUseClient
objData.CursorType = adOpenStatic
objData.LockType = adLockReadOnly
objData.Open vlogSQLFilter(strQuery), objDB
If Not blnUNIXMode Then
Set objData.ActiveConnection = Nothing
End If
Set vfuncGetRS = objData
End Function
如果我从记录中选择一个值,并获得其VarType函数返回值16如。
Set objRS = vfuncGetRS("SELECT * FROM SOME_TABLE")
Response.Write(VarType(objRS("someColumn")))
的古怪分为两个部分
- 这只是发生在一个特定的服务器上,此代码是一个CMS,我在多个网站上部署的一部分,它只是在IIS 6.0上运行的实例导致我一个问题。此外,这似乎取决于记录集选项。
- 值16不是VarType函数返回一个有效的值,根据官方的MSDN参考
我可以通过增加检查到受着怪异值的函数避开这个问题很容易哪些是如下
If VarType(strValue) = 16 Then strValue = CInt(strValue)
我必须做上述,因为我需要有问题的功能,以正确地检测该类型是数字,并且如果VarType函数是16然后则IsNumeric()给出了假即使在该变量中的值是数字(并且将始终为数字)
所以我的问题是没有人知道为什么会发生这种情况?
问题:当你得到VarType 16什么是底柱数据类型? 你使用什么样的数据库? 所有这些都会影响VarType函数的结果。 – 2009-05-20 12:08:30