プロが教えるわが家の防犯対策術!

こんばんは。
テーブル1のフィールド1を、テキスト型にし
1
2
3

と入力しました。

クエリを作成し、
SELECT CLng([テーブル1]![フィールド1]) AS 数値に変換
FROM テーブル1;
とした場合、
「あ」の部分が数値に変換できないため、「#エラー」となります。

このままだと、並べ替えをしようとすると

「抽出条件でデータ型が一致しません。(Error 3464)」

となるため、「#エラー」を0へ変換したいのですが、
やり方がわかりません。
IIFなどを使うのでしょうか?
ご教授よろしくお願い致します。

「アクセス エラーを数値「0」に変換するに」の質問画像

A 回答 (1件)

> IIFなどを使うのでしょうか?



そうですね。
IsNumeric関数で数値かどうかを判定し、数値ならCLng関数で変換、
それ以外は0、とすることになるかと思います。

SELECT IIf(IsNumeric([テーブル1].[フィールド1]),CLng([テーブル1].[フィールド1]),0) AS 数値に変換
FROM テーブル1;

なお、IIF関数では、第1引数の結果がTrue/Falseのいずれであっても
第2引数・第3引数は一旦演算されます。
そのため、以下のような式にした場合は、結局エラーとなります。
(フィールド1が「あ」の場合、第3引数の式CLng(~)がエラーとなるため、
 式全体の結果もエラーを返す、と)

SELECT IIf(IsError(CLng([テーブル1].[フィールド1])),0,CLng([テーブル1].[フィールド1])) AS 数値に変換
FROM テーブル1;
    • good
    • 0
この回答へのお礼

後のほうはよくわかりませんが上のSQL文でうまくいきました!ご回答ありがとうございます。

お礼日時:2009/07/11 11:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A