我遇到了一個奇怪的問題,即從數據庫獲取數據並使用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