SQL = " SELECT CDBL(フィールド名) FROM テーブル名 "
又は、
SQL = " SELECT CDBL(フィールド名) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
CDBL で文字列を倍精度浮動小数点数型 (Double)に変換することができます。
単精度浮動小数点数型は負の場合、-1.79769313486231E308 ~ -4.94065645841247E-324 になり
正の場合、4.94065645841247E-324 ~ 1.79769313486232E308 になります。
文字列が数値として扱えない場合、「抽出条件でデータ型が一致しません」のエラーが発生します。
文字列が単精度浮動小数点数型の範囲を超える場合、「オーバーフロー」のエラーが発生します。
例: SQL = " SELECT CSNG(面積) FROM 画像分析 "
画像分析テーブルの面積フィールドを倍精度浮動小数点数型として取得します。
サンプルソフト
[実行時の画面]
「文字列を倍精度浮動小数点数型に変換 CDBL関数」ボタンをクリックすると、
変換結果を右枠に表示します。
単精度変換と比べ、小数の数値を変換した場合に誤差が発生していないのが分かります。
■実行画面
[サンプルデータ テーブル]
データID 文字
10 1
11 2
13 15.6
16 386.5678
17 -20.788
18 100
[コード]
Option Compare Database
Private Sub コマンド8_Click()
Dim SQL As String
Dim rs As Recordset
Me!テキスト1 = "文字列" & vbCrLf
Me!テキスト2 = "数値" & vbCrLf
SQL = "SELECT 文字,CDBL(文字) FROM サンプルデータ"
Set rs = CurrentDb.OpenRecordset(SQL)
Do Until rs.EOF
Me!テキスト1 = Me!テキスト1 & rs(0) & vbCrLf
Me!テキスト2 = Me!テキスト2 & rs(1) & vbCrLf
rs.MoveNext
Loop
Set rs = Nothing
End Sub
[変換できない場合のエラー]
文字を変換しようとした場合に発生したエラー
「実行時エラー 3464 抽出条件でデータ型が一致しません。」
NULLを変換しようとした場合に発生したエラー
「実行時エラー 94 Null文字の使い方が正しくありません。」
単精度浮動小数点数型( -32,768 ~ 32,767)を超える文字を変換しようとした場合に発生したエラー
「実行時エラー 6 オーバーフロー
サンプルソフトのダウンロード