VB6にIsDouble()関数はありますか?私が間違っていないと、VB6のdoubleデータ型はSQL Server 2000のfloatに相当します。 あなたのアドバイスは大歓迎です。VB6でIsDouble()?
答えて
Function IsDouble(ByVal varValue As Variant) As Boolean
Dim dblTest As Double
On Error Resume Next
dblTest = CDbl(varValue)
IsDouble = Err.Number = 0
End Function
十分に機能するはずのIsNumeric()
関数があります。それがあなたのニーズに不十分な場合は、どのように説明することもできますか?
私は背景を明らかにしましょう、私はフィールドに挿入するために、テキストファイルから来ている文字列値(SQLのfloatデータ型)をチェックする必要がありますデータベーステーブル(SQL Server 2000)の –
IsNumericの唯一の問題は、オーバーフローが許容されることです。これは、大きすぎてfloat型に収まらない数値です。 –
これは正しくありません。Doubleに収まる値だけを受け入れます。 (IEEE標準の8バイトの浮動小数点数) – MarkJ
IsNumeric()は、Doublesに適合する値のみを受け入れます。それは地域別に認識されています。つまりフランスの地域設定の場合、小数点記号はコンマです。
私はイミディエイトウィンドウでこれを試しました。
Debug.Print IsNumeric("4e308")
False
マニュアルでVB6二重の定義は、「VB6ダブル変数は-4.94065645841247E-324する-1.79769313486232E308からの値の範囲のIEEE 64ビット(8バイト)浮動小数点数として格納されています負の値の場合は4.94065645841247E-324から正の値の場合は1.79769313486232E308になります。
私はこれが、オンラインdocsのSQL Serverフロートと同じだと思います。 "-1.79E + 308〜-2.23E-308,0、および2.23E + 308〜1.79E + 308の値を持つ浮動小数点数データ。
実際には、Vartype関数を使用する方がずっと優れています。
Private Function IsDouble(ByVal value As Variant) As Boolean
IsDouble = (VarType(value) = vbDouble)
End Function
あなたは作り付けのIsNumeric関数機能を使用することができる代わりに、VB6で利用できる作り付けのIsDouble機能はありません。そうしないと、同じことを達成するために、次のユーザー定義関数を使用することができます。
Function IsDouble(ByVal value As Variant) As Boolean
Dim convertedValue As Double
On Error Goto EH
convertedValue = CDbl(value)
IsDouble = True
Exit Function
EH:
IsDouble = False
End Function
- 1. VB6
- 2. (VB6)
- 3. VB6
- 4. CreateObject vb6
- 5. VB6 NegotiateMenus
コードをお寄せいただきありがとうございます。 バックグラウンドを明らかにすると、データベーステーブル(SQL Server 2000)のフィールド(SQL floatデータ型)に挿入するために、テキストファイルの文字列値をチェックする必要があります。 –
CDblが入力として受け入れるものに注意してください。私はそれが後にナンセンス文字を受け入れると思う。 –
心配しないで、私はVal関数を考えていました。しかし、海外のユーザーがいる場合は、これらのユーザーに対してもこれをテストすることをお勧めします。私はCDBlが変換を行うために地域の設定を使用すると思います。 –