• ベストアンサー

テキスト型に入れた値を数値に変換し、「#エラー」を

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

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

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

No1です。数値型なので、 SELECT IIf(IsNumeric([テーブル1]![フィールド1]),CLng([テーブル1]![フィールド1]),0) AS 数値型に変換 FROM テーブル1; にしてください。"0"ではなく、0ですね。

quygquygqu
質問者

お礼

再度ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

テーブルデータ ID フィールド1 1 1 2 2 3 3 4 あ ーーー クエリ(選択クエリ) デザイングリッドで 式1: IIf(IsNumeric([フィールド1]),CDbl([フィールド1]),[フィールド1]) 実行!で 結果は 式1 ID フィールド1 1 1 1 2 2 2 3 3 3 あ 4 あ ーーー エクセル関数的イメージで、IFを使うには IIF関数を使う。 http://www.relief.jp/itnote/archives/001423.php

quygquygqu
質問者

お礼

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

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

SELECT IIf(IsNumeric([テーブル1]![フィールド1]),CLng([テーブル1]![フィールド1]),"0") AS 数値型 FROM テーブル1;

quygquygqu
質問者

お礼

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

関連するQ&A

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

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

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

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

  • アクセスクエリ メモ型だとエラーになる

    アクセスのテーブル1(主キーなし)に *********************************************************** フィールド1(メモ型) あああ いいい ううう いいい *********************************************************** と言うデータがあるのですが 「あああ」「ううう」は1個で「いいい」は2つあります。 これを、クエリ1で *********************************************************** SELECT テーブル1.フィールド1, Count(テーブル1.フィールド1) AS フィールド1のカウント FROM テーブル1 GROUP BY テーブル1.フィールド1; *********************************************************** と作り、 新しいクエリで *********************************************************** SELECT テーブル1.フィールド1, クエリ1.フィールド1のカウント FROM テーブル1 INNER JOIN クエリ1 ON テーブル1.フィールド1 = クエリ1.フィールド1; *********************************************************** としたいのですが、 メモ型ではダメなのでしょうか? メモ型でフィールドを宣言しつつ、 このようなクエリを作るにはどうすればいいですか? テキスト型にすると問題なくいけます。

  • ユニオンクエリで0と表示される。

    教えてください。 4つのテーブルをユニオンクエリでひとつにしたく以下のようにSQLに書きました。 SELECT ID AS フィールド1 ,No AS フィールド2, Remark AS フィールド3 FROM テーブル1 UNION ALL SELECT ID,No,Remark FROM テーブル2 UNION ALL SELECT ID,No,Remark FROM テーブル3 UNION ALL SELECT ID,No,Remark FROM テーブル4 フィールド2のNOには数字が入っているのですがフィールド2の列にはすべて0と表示されて数字がででてきません。ID(オートナンバー型)とRemark(短いテキスト型)はちゃんと表示されます。もとのテーブル1と2のNoは数値型 テーブル3と4のNoは短いテキスト型です。なにが原因でどうしたら数値が表示されるようになりますか?

  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • Access97で数値型からテキスト型への変換

    お世話になります。 Access97を使用しており、テーブルには下記のようになっています。 コード1はテキスト型で2桁、コード2と3は数値型で共に3桁です。 コード1|コード2|コード3 ------+--------+------- AS|1|10 BR|10|5 ST|100|100 上のテーブルからテーブル作成クエリーにて、コード1からコード3をコード4の一つにまとめ、数値型で現れなかったゼロを詰めて、下記のように変換したいのです。 コード4 --------- AS001-010 BR010-005 ST100-100 分かる方が居ましたらお願いします。

  • 「#エラー」を含んでいても、並べ替えができるようになりたい。

    テーブル1 A-a B-b テーブル2 A-a C-c クエリ1 SELECT Replace(テーブル1![1],"-","") AS 1 FROM テーブル1; クエリ2 SELECT Replace(テーブル2![2],"-","") AS 2 FROM テーブル2; クエリ3 SELECT クエリ1.[1], クエリ2.[2] FROM クエリ2 RIGHT JOIN クエリ1 ON クエリ2.[2] = クエリ1.[1]; ****************************************************************** 各テーブルのクエリを作成し、Replace関数で置換して、 その置換後の各クエリを、さらにクエリを作成して結合しています。 その時に、 テーブル1にはあるのにテーブル2にない値が 「#エラー」となるのですが、 この状態でも並べ替えを出来るようにするにはどうすればいいでしょうか? 他の値にデータ型を変えるのでしょうか? 「#エラー」があるフィールドは並べ替えも出来ないですし、 デザインビューの抽出条件で 「Not Like "#エラー"」 としても 「抽出条件でデータ型が一致しません。」 というエラーになり、データシートビューで表示できません。 アドバイス宜しくお願い致します。

  • ACCESSのSQLで数値型に変換するには

    こんにちわ。今SQLの書き方が分からなくて大変困っております。 ACCESS2000で、テーブルが一つあるとします。 テーブルの内容は、氏名・点数の2項目だとします。 点数が50点より大きい人を抽出したいのですが、 項目は全てSTRING型にしないといけないため、 単純に比較できません。抽出した項目を数値型に 変換して、比較したいのですが、どのように書いたらいいのでしょうか。 SELECT  Shimei , CAST(Tensuu AS NUMERIC) FROM   Table1 WHERE   Tensuu > 50; このようなクエリを書いてみましたがエラーが出てしまいます。 ORACLEではTO_NUMBERなどの関数があると思うのですが、 ACCESSではどのようにしたらいいのでしょうか?? よろしくお願いします。

  • CONCAT内の数値が、別の長い数値に変換されます

    お世話になります。 MySQL5をphpMyAdminで利用しています。 フィールド項目の属性が文字列(VARCHAR)の際には表示OKなのですが、 以下のような数値フィールド属性(BUN_CODE、およびBUN2_CODE)だと、 SELECT文を実行した際に もともと入っている正しい数値ではなく、 なぜか、別の長い数値(意味不明の長い数値)に、 変換されて表示されてしまいます。 SELECT concat(  case when  a.`BUN_CODE`<>b.`BUN_CODE` then ""  else a.`BUN_CODE`   end,    case when  a.`BUN2_CODE`<>b.`BUN2_CODE` then ""  else a.`BUN2_CODE`   end  ) AS DMYDATA FROM (  SELECT * FROM `DMY_TABLE`  WHERE `ID_CODE`=12345 ) AS a, (  SELECT * FROM `DMY_TABLE`  WHERE `ID_CODE`=67890 ) AS b; 質問内容ですが、 数値属性のフィールドに対しては、 何か付け加えないと、上記の場合には、 正しい値を表示出来ないのでしょうか? 以上になります。 情報をお持ちの方がいらっしゃいましたら、 ぜひ教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • オートナンバー型はフィルタはかけられないのですか?

    ●テーブル1 フィールド1/テキスト型(主キー) フィールド1 20130128ダイエー ●テーブル2 ID/オートナンバー型(主キー) テーブル1の主キー/テキスト型 内容/テキスト型 ID   テーブル1の主キー   内容 1   20130128ダイエー   牛乳 2   20130128ダイエー   鶏肉 ●クエリ1 SELECT テーブル1.*, テーブル2.* FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.フィールド1 = テーブル2.テーブル1の主キー; ●フォーム1 そのなかにクエリ1に紐づいたサブフォームを設置(データシートビュー) フォーム1にコンボボックスを設置して、 Private Sub コンボ1_AfterUpdate() With Me.Controls("クエリ1").Form .Filter = "ID = '" & Me.コンボ1.Value & "'" .FilterOn = True End With End Sub このような構成なのですが フィルタを掛けようとすると、 実行時エラーで 抽出条件でデータ型が一致しません。(エラー 3464) となってしまいます。 これはフィルタを掛けようとしているデータ型がオートナンバー型だからでしょうか?

専門家に質問してみよう