• ベストアンサー

access2003 「#エラー」を文字列にしたい

テキスト型に入れた値を数値に変換し、「#エラー」を文字列にしたい テーブル1のデザインビューで ・フィールド1 テキスト型 ・主キーなし として データを 1 2 あ を投入します。 そして SELECT CLng(テーブル1!フィールド1) AS 数値型に変換 FROM テーブル1; クエリを作りました。 1と2は数値に変換されますが、文字列を入れた「あ」は 「#エラー」になります。  「#エラー」を「未設定」という文字列にしたいのですが どうすえばいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 もとのテーブルのフィールドが文字型 ですから、厳密に言えば数値型に 変換したのではなく、フィールドの文字列が 数値として認識できるかでIsNUmeric関数を 使い、TrueならばCLng関数で変換して フィールドに表示、そうでなければ 文字列の「未設定」をフィールドに 表示しますから、フィールドは文字型の フィールドになります。同じフィールドに 違う型が混在することはできないので、 Accessが自動的に文字型と判断します。 もし、数値型のようにするならば、未設定 ではなく、数値のたとえば、「9999999」 のような数値をひょうじするようにすれば 数値型のようになります。 SELECT IIf(IsNumeric([テーブル1]![フィールド1]),CLng([テーブル1]![フィールド1]),99999) AS 数値型に変換 FROM テーブル1; のように。

bkshfu
質問者

お礼

ありがとうございます。できました。

その他の回答 (2)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

SELECT IIf(IsNumeric([フィールド1]),CLng([フィールド1]),Null) AS 数値型に変換 FROM テーブル1 これで、「#エラー」は表示されなくなります。 「未設定」 と表示したければ フィールドプロパティ の 「書式」 を 「0;0;0;"未設定"」 とすれば良いでしょう。 ただし、1番下の新しいレコードの行も "未設定" になる副作用があります。

bkshfu
質問者

お礼

ありがとうございます。できました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

SELECT IIf(IsNumeric([テーブル1]![フィールド1]),CLng([テーブル1]![フィールド1]),"未設定") AS 数値型に変換 FROM テーブル1;

bkshfu
質問者

お礼

ありがとうございます。できました。