| CSNG関数で文字列を単精度浮動小数点数型 (Single)に変換する | ||||
SQL = " SELECT CSNG(フィールド名) FROM テーブル名 " 又は、 SQL = " SELECT CSNG(フィールド名) AS 名前 FROM テーブル名 " Set rs = CurrentDb.OpenRecordset(SQL) CSNG で文字列を単精度浮動小数点数型 (Integer)に変換することができます。 単精度浮動小数点数型は負の場合、-3.402823E38 〜 -1.401298E-45 になり 正の場合、1.401298E-45 〜 3.402823E38 になります。 変換結果は誤差が出る場合がありますので注意が必要です。 文字列が数値として扱えない場合、「抽出条件でデータ型が一致しません」のエラーが発生します。 文字列が単精度浮動小数点数型の範囲を超える場合、「オーバーフロー」のエラーが発生します。 例: SQL = " SELECT CSNG(距離) FROM 画像解析 " 画像解析テーブルの距離フィールドを単精度浮動小数点数型として取得します。
サンプルソフト [実行時の画面] 「文字列を単精度浮動小数点数型に変換 CSNG関数」ボタンをクリックすると、 変換結果を右枠に表示します。 小数の数値を変換した場合に誤差が発生しているのが分かります。 ■実行画面 ![]() [サンプルデータ テーブル] データ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 文字,CSNG(文字) 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 オーバーフロー ![]()
ダウンロード |
||||
Copyright(C) 2007-2008 FeedSoft