データベースからデータを取得し、ASP用のVBScriptを使用して正しい型にキャストする際に奇妙な問題が発生しました。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")))
すごみは2つの部分
- である。これは、特定のサーバー上で行われ、このコードは、私は複数のサイトに展開しているCMSの一部であり、それはIIS 6.0、その上で実行されている唯一のインスタンスです私に問題を引き起こします。また、これはレコードセットのオプションに依存するようです。 VarTypeは、公式のMSDNの参照に応じ
を返送するための
If VarType(strValue) = 16 Then strValue = CInt(strValue)
を次のように私は私が正しくタイプが数値であることを検出するために、当該の機能を必要とするので、上記を行う必要があるとのVarTypeがある場合は16、その後IsNumeric関数()がfalse与えた場合でも、変数の値数字です(数字で表示されます)
だから私の質問は誰もがなぜこれが起こるか知っていますか?
質問:VarType 16を取得すると、基礎となる列のデータ型は何ですか? どのような種類のデータベースを使用していますか? これはすべて、VarType関数の結果に影響します。 –
基本となる列のデータ型はBITです。データベースは、Access、MySql 4x/5x、SQL Server 2000+のいずれかです。私が言ったように、ソフトウェアは異なる環境の複数のサーバーにインストールされています。この特定の環境は、MySQL 4.1.21を使用するIIS 6.0です – RobV