• ベストアンサー

アクセス エラーを数値「0」に変換するには

こんばんは。 テーブル1のフィールド1を、テキスト型にし 1 2 3 あ と入力しました。 クエリを作成し、 SELECT CLng([テーブル1]![フィールド1]) AS 数値に変換 FROM テーブル1; とした場合、 「あ」の部分が数値に変換できないため、「#エラー」となります。 このままだと、並べ替えをしようとすると 「抽出条件でデータ型が一致しません。(Error 3464)」 となるため、「#エラー」を0へ変換したいのですが、 やり方がわかりません。 IIFなどを使うのでしょうか? ご教授よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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;

1wer56
質問者

お礼

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

関連するQ&A