• 締切済み

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

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

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

以後この使い分けがどれだけ出現するかわかりませんが、いろんな場面がありそうと考えると項目は分けておくかフラグを設定しておくこと勧めます。 レポート等では、文字列として連結するか判定すれば1エリアに出せるでしょうし。 仮に、商品在庫管理となれば事前入力により在庫数量が一時的にマイナスになることもあります。数字としてしたいがための意味つけした使い方は、影響ないか使用用途の確認が必要です。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

残念ながら、ひとつのフィールドに複数のデータ型を設定することは出来ません。 なので、Excelにエクスポートした後でExcel上で個々に設定してください。 もしくはAccessの数量フィールドの『無制限』や『-』などを0とか-1に変換して フィールドのデータ型を数値型にして運用するしかないですね。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

isnumber関数で数値かどうかチェックできます。 例えば if isnumber(xxx) then '数値の場合 ・・・・・ else '数値でない場合 ・・・・・ endif

関連するQ&A