こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessへのインポート時に数字が正しく設定されない

Access2000で、あるCSVをインポートしたところ、数字の項目正しく入らない
事象が起きました。
(CSVでは"665554368"という数字が、Accessでは"665554340"になってしまいます。)
金額に該当する項目なので、正しく入らないと困るのですが、原因は何が
考えられ、どうすれば解決するでしょうか?

以下の方法を試しましたが、いずれもダメでした。
・該当の値が入るフィールドのデータ型を以下のものにする。
 →通貨型、単精度浮動小数点型、倍精度浮動小数点型
 (いずれもダメです)

・CSVの区切り文字を別の文字に置換する。
 →"|"だったものを、","区切りにしましたがだめでした。

・CSVをExcel2003形式で保存し、Excelをインポートする。
 →直接CSVをインポートしたときと同じ数字になりました。

お手数ですが、皆様の知恵を貸していただけないでしょうか。
よろしくお願いします。

投稿日時 - 2008-01-10 20:03:01

QNo.3667864

すぐに回答ほしいです

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

以下を試してみてください。

1)実際に読み込んだ結果のテーブルのフィールドの型もそうなっていますか?
(通貨を指定したのに、実際には単精度型になっているとか)

2)おかしいテーブルの値を手動で 665554340 から665554368に変更できますか?
(読み込んだ結果を変更できるか)

3)以下のようなcsvファイルを、読み込んでみても、同様におかしくなりますか?
(うちのAccess2000ではちゃんと読みこめています。)

1,665554368
2,6655543680
3,66555436800

4)エディタなどで、元のCSVの行を減らしたファイル(究極1行)を作って読みこんでみてもおかしくなりますか?
(途中のデータが原因で、何らかの不具合が起こっているか)

投稿日時 - 2008-01-11 06:19:16

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こちらで通貨型で定義した項目にインポートした場合は問題ありませんでした
のでfumufumu_2006さんの回答の指示に従ってください。

もしこれでうまく行かない場合は、インポート先のテーブル
が壊れている可能性があります。

既インポート済みレコードも全部消してやり直すか、
新しい名前でテーブルから定義しなおしてインポートして
みてください。
(作業する場合は、ACCESSのファイルは別名でコピーしてバック
 アップしておいてください。万一の場合は戻せなくなりますので)

投稿日時 - 2008-01-11 13:12:21

ANo.2

ACCESS 2000で適当なCSVファイルを作成して画面メニューからの
インポートを試してみました。
倍精度浮動小数点型で定義されているデータ項目列は確かに
ご指摘の現象になりましたが、通貨型なら問題ありませんよ。「665554368」で認識します。

ちなみにACCESS 2000 VBAモジュール画面から検索できるヘルプに
ACCESSで扱うデータ型についての記載があります。引用していいかな。

整数型 (Integer) 2 バイト -32,768 ~ 32,767
長整数型 (Long) 4 バイト -2,147,483,648 ~ 2,147,483,647
単精度浮動小数点数型 (Single) 4 バイト
  -3.402823E38 ~ -1.401298E-45 (負の値)。
  1.401298E-45 ~ 3.402823E38 (正の値)。
倍精度浮動小数点数型 (Double) 8 バイト
  -1.79769313486231E308 ~ -4.94065645841247E-324 (負の値)。
  4.94065645841247E-324 ~ 1.79769313486232E308 (正の値)。
通貨型 (Currency) 8 バイト
  -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807

投稿日時 - 2008-01-10 23:54:52

お礼

通貨がたでも実はだめでした・・・。
インポートするときに、設定ボタンから通貨型ト選ぶんでしょうか?
私はそれでダメでした・・。

ちなみに、浮動小数点型と通貨型で何が違うんでしょうか?

投稿日時 - 2008-01-11 00:33:42

おかしくなったフィールドの型は何になっていますか?
665554368 程度の値なら、長整数型で十分読める値だと思います。
通貨型なら、もう5-6桁読めるはずですが・・・
ちなみに、インポートは手動ですか、VBAからですか?

投稿日時 - 2008-01-10 22:58:32

補足

回答ありがとうございます。
フィールドの型は、通貨型、単精度浮動小数点型、倍精度浮動小数点型
で実施しています。
(調整数ですと20何億という数字は読み込めなくなってしまうので)

あとインポートは手動です

投稿日時 - 2008-01-10 23:14:24

あなたにオススメの質問