過去ログ

                                Page      69
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼インポートエラー  mini 02/10/15(火) 16:41
   ┗Re:インポートエラー  yu-ji 02/10/16(水) 10:03
      ┗Re:インポートエラー  mini 02/10/16(水) 10:32
         ┗Re:インポートエラー  yu-ji 02/10/16(水) 11:02
            ┣Re:インポートエラー  yu-ji 02/10/16(水) 11:21
            ┗いろいろ調べてみたんです・・・。  mini 02/10/18(金) 14:54
               ┗Re:いろいろ調べてみたんです・・・。  yu-ji 02/10/18(金) 16:19
                  ┗大変お世話になりました。  mini 02/10/21(月) 10:29
                     ┗参考までに。  yu-ji 02/10/21(月) 11:26

 ───────────────────────────────────────
 ■題名 : インポートエラー
 ■名前 : mini <miffy-m@bea.hi-ho.ne.jp>
 ■日付 : 02/10/15(火) 16:41
 -------------------------------------------------------------------------
   こんにちは。すいませんが、みなさんのお知恵を
貸して下さい。

エクセル2000のファイルをアクセス2000に
インポートしたいんですが、1台のパソコンでは問題
なくインポート出来るんですが、もう1台のパソコン
ではインポートエラーテーブルが作成されて一部の
フィールドの値がインポートできません。どうして同じ
エクセルファイルを同じデータベースでインポートしよう
とするのに2台ともうまくいかないのかが分かりません。

エクセルデータの内容

日付|品番|注文番号|数量
21010|3005  |10000 |360
21010|3006  |20000 |200
21010|3007  |30000 |400
21010|140-1 |P-1A-50|130
21010|300必要|在庫分 | 30

インポートエラーの内容

エラー       |フィールド|行
データ型の変換エラー|品番   |4
データ型の変換エラー|注文番号 |4
データ型の変換エラー|品番   |5
データ型の変換エラー|注文番号 |5

アクセスのフィールド名・データ型

 日 付 | 品 番 |注文番号 |数量
テキスト型|テキスト型|テキスト型|数値型

この変換エラーを発生させないためにはどうしたら
いいでしょうか?&インポートした時に日付が5桁
ならゼロを頭に自動的につけるなんて方法ありますか?

021010としたいんですが、エクセルの日付データが
21010のため、何とかならないかなと・・・。

すいません、説明不足かもしれませんが、ヒントでも
結構です。ご教授ください。

 ───────────────────────────────────────  ■題名 : Re:インポートエラー  ■名前 : yu-ji  ■日付 : 02/10/16(水) 10:03  -------------------------------------------------------------------------
   ▼mini さん:
>エクセルデータの内容
>
>日付|品番|注文番号|数量
>21010|3005  |10000 |360
>21010|3006  |20000 |200
>21010|3007  |30000 |400
>21010|140-1 |P-1A-50|130
>21010|300必要|在庫分 | 30
>
>インポートエラーの内容
>
>エラー       |フィールド|行
>データ型の変換エラー|品番   |4
>データ型の変換エラー|注文番号 |4
>データ型の変換エラー|品番   |5
>データ型の変換エラー|注文番号 |5
>
>アクセスのフィールド名・データ型
>
> 日 付 | 品 番 |注文番号 |数量
>テキスト型|テキスト型|テキスト型|数値型

これは、手動でのインポートの話ですか?
VBAを使ったインポートの話ですか?
2台が同じ結果にならないのは不明ですが、同じExcelデータで同じAccessファイル
を使ってます?

とりあえず、エラーとデータから想像できるのは、インポートするAccessのテーブル
の、品番と注文番号の型が、テキスト型とかかれてますが、数値型になって
ないですか?
以下、手動でのインポートをしてるとして。
ウィザードを使ってインポートをしいるなら、品番と注文番号が最初のデータを見て、
最初にウィザードは勝手に数値型だと判断すると思うのですが、意図的にテキスト型
を指定しないと、このようなエラーが出ると思います。
まず、Accessのインポートするテーブルのデータ型をもう一度確認してみてください。


>この変換エラーを発生させないためにはどうしたら
>いいでしょうか?&インポートした時に日付が5桁
>ならゼロを頭に自動的につけるなんて方法ありますか?
>
>021010としたいんですが、エクセルの日付データが
>21010のため、何とかならないかなと・・・。
>
>すいません、説明不足かもしれませんが、ヒントでも
>結構です。ご教授ください。

インポート時にテーブルに入れるデータを上記のように変更する方法は
ないと思います。
なので、インポート前のエクセルの日付の表示形式で、6桁になるようにしておくか、
取り込み時は5桁で取り込んで、インポート後にVBAなり更新クエリなりでデータを
変更するということになると思います。

 ───────────────────────────────────────  ■題名 : Re:インポートエラー  ■名前 : mini <miffy-m@bea.hi-ho.ne.jp>  ■日付 : 02/10/16(水) 10:32  -------------------------------------------------------------------------
   yu-ji さんへ

解説ありがとうございます。
説明が不足していまして、申し訳ないです。

>これは、手動でのインポートの話ですか?
>VBAを使ったインポートの話ですか?

インポートの方法はVBAを使っています。
こんな感じです。↓
DoCmd.TransferSpreadsheet acImport, acSpreadsheet-
TypeExcel9, Me!txtテーブル, Me!txtファイル, True

フォームにインポート先のテーブル名(Me!txtテーブル)と
インポートするエクセルファイル名(Me!txtファイル)を
入力し、インポートボタンをクリックするとインポートが
始まると言った感じです。

>2台が同じ結果にならないのは不明ですが、同じExcelデータで同じAccessファイル
>を使ってます?

はい、同じエクセルデータを同じアクセスファイルでインポート
しています。

>とりあえず、エラーとデータから想像できるのは、インポートするAccessのテーブル
>の、品番と注文番号の型が、テキスト型とかかれてますが、数値型になって
>ないですか?

品番と注文番号のデータ型は確認しましたが、テキスト型です。
でも、エクセルのデータを確認したら、数字しかないセルも
文字が含まれているセルも数値型となっていました。これが問題
ですか?

>ウィザードを使ってインポートをしいるなら、品番と注文番号が最初のデータを見て、
>最初にウィザードは勝手に数値型だと判断すると思うのですが、意図的にテキスト型
>を指定しないと、このようなエラーが出ると思います。

エクセルのファイルをいじらないとすると、上記の方法で意図的に
テキスト型とする方法になりますか?それはウィザードを使用しなく
てもそうですか?

>インポート時にテーブルに入れるデータを上記のように変更する方法は
>ないと思います。
>なので、インポート前のエクセルの日付の表示形式で、6桁になるようにしておくか、
>取り込み時は5桁で取り込んで、インポート後にVBAなり更新クエリなりでデータを
>変更するということになると思います。

アドバイスありがとうございました。参考にして6桁になるよう、考えて
みます。

 ───────────────────────────────────────  ■題名 : Re:インポートエラー  ■名前 : yu-ji  ■日付 : 02/10/16(水) 11:02  -------------------------------------------------------------------------
   ▼mini さん:
>>これは、手動でのインポートの話ですか?
>>VBAを使ったインポートの話ですか?
>
>インポートの方法はVBAを使っています。
>こんな感じです。↓
>DoCmd.TransferSpreadsheet acImport, acSpreadsheet-
>TypeExcel9, Me!txtテーブル, Me!txtファイル, True

では、うまくいかないPCで、手動インポートした場合はどうでしょうか?
あと、2台のPCのAccessはバージョン・パッチは共通ですか?

>品番と注文番号のデータ型は確認しましたが、テキスト型です。
>でも、エクセルのデータを確認したら、数字しかないセルも
>文字が含まれているセルも数値型となっていました。これが問題
>ですか?

可能性がないかどうかは分からないので、問題ないなら、試しに文字列にして
テストされてはどうですか?

>>ウィザードを使ってインポートをしいるなら、品番と注文番号が最初のデータを見て、
>>最初にウィザードは勝手に数値型だと判断すると思うのですが、意図的にテキスト型
>>を指定しないと、このようなエラーが出ると思います。

すみません、これは間違いです(^^;
そういう可能性もあるってだけで、必ずそうなるわけじゃないです。

 ───────────────────────────────────────  ■題名 : Re:インポートエラー  ■名前 : yu-ji  ■日付 : 02/10/16(水) 11:21  -------------------------------------------------------------------------
   もう一点。

使われているAccessのバージョンが記載されていらっしゃらないですが、
以下のページが参考になるかもしれません。
#レジストリ キーの "TypeGuessRows" 値が二つのPCで違う?

http://support.microsoft.com/default.aspx?scid=kb;ja;JP109376

これは、97用の資料なので、2000や2002だとどうなるか分かりませんが、
(2000では)同じレジストリキーが存在しているので、規定値(2000では25?)
を越えれば同様のエラーになりそうですね。

 ───────────────────────────────────────  ■題名 : いろいろ調べてみたんです・・・。  ■名前 : mini <miffy-m@bea.hi-ho.ne.jp>  ■日付 : 02/10/18(金) 14:54  -------------------------------------------------------------------------
   yu-ji さんへ

お返事遅くなってすいません。
教えて頂いたサイトを見て私の勉強不足なんですが、
何を書いてるのかさっぱり分からなかったので、今日まで
調べてみたんですが、よく分かりません・・・。
このサイトで記載の、
「以下のレジストリ キーの "TypeGuessRows" 値を変更します。」
って、どこの事ですか?どうやったら値を変更できますか?

>では、うまくいかないPCで、手動インポートした場合はどうでしょうか?
>あと、2台のPCのAccessはバージョン・パッチは共通ですか?

手動でも試してみましたが、同じでした。アクセスのバージョンは
どちらも2000です。

>可能性がないかどうかは分からないので、問題ないなら、試しに文字列にして
>テストされてはどうですか?

文字列に変更したら、インポートが問題なく出来ました。

何度もいろいろ聞いてすいません・・・。m(__)m

 ───────────────────────────────────────  ■題名 : Re:いろいろ調べてみたんです・・・。  ■名前 : yu-ji  ■日付 : 02/10/18(金) 16:19  -------------------------------------------------------------------------
   ▼mini さん:
>このサイトで記載の、
>「以下のレジストリ キーの "TypeGuessRows" 値を変更します。」
>って、どこの事ですか?どうやったら値を変更できますか?

レジストリについての知識がなければ、下手に行わないほうがいいとは思う
ので、周りに詳しい方はいらっしゃらないですか?
#下手にレジストリを修正したり削除したりすると、PC自体が動かなくなったり
#するんで。下手しなきゃ問題はないんですが。

もし自分ひとりで行わなければいけないということであれば、念のために、
最初にレジストリファイルの書き出しを行って、バックアップを取っておいた方が
いいです。

で、以下、確認する為の説明。

******

1.[スタートメニュー]-[ファイル名を指定して実行]を選択
2.regedit と入力して、OKボタンを押す
3.レジストリエディタが開かれるので、まずレジストリの書き出しを行う
4.レジストリエディタの左メニューにある以下の中身を開く

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

5.右メニューに出てくるImportMixedTypesが"Text"になってるのを確認する
6.同じく、TypeGuessRowsがいくつになってるかを確認する

******

という手段で確認はできます。

ところで、リンクの所に書いてあった内容は理解できました?

要は、上記で調べたTypeGuessRowsの行数までのデータをチェックして、
その中が単一の型式だったらその型に、複数の型が存在していればImportMixedType
の型に(通常Textになっていると思う)するようです。<Access

で、想像したのは、「片方の上手くいくPCではその指定行までにテキスト型と判断される
セルを含まれていて、上手くいかないPCではその指定行までにテキスト型と判断される
セルを含んでいない」のではないかと思ったわけです。


>>では、うまくいかないPCで、手動インポートした場合はどうでしょうか?
>>あと、2台のPCのAccessはバージョン・パッチは共通ですか?
>
>手動でも試してみましたが、同じでした。アクセスのバージョンは
>どちらも2000です。

当ててあるパッチも同じですか?
<ServicePackを片方は当ててあって片方あててないとか。
#もし”バグ”であるなら、ServicePackなどで修正されている可能性があるので。
#それを片方にしか当てていないと、二つのPCで差が出てきます。

>>可能性がないかどうかは分からないので、問題ないなら、試しに文字列にして
>>テストされてはどうですか?
>
>文字列に変更したら、インポートが問題なく出来ました。

問題なく出来たら、解決というわけではないんですね(笑)?
自動的に、文字列にするということは出来ないということなんでしょうか?
それが、正当な解決法だと思うのですが。

どうしても無理ということであれば、
該当ExcelファイルをCSV形式に変換しちゃって、そのCSVをAccessで読み込むという形
すれば、エラーはでないかも?

 ───────────────────────────────────────  ■題名 : 大変お世話になりました。  ■名前 : mini <miffy-m@bea.hi-ho.ne.jp>  ■日付 : 02/10/21(月) 10:29  -------------------------------------------------------------------------
   yu-ji さんへ

沢山の回答ありがとうございました。

レジストリについては殆ど無知に近い私ですので、
勉強してから教えて頂いた方法も考えてみます。

とりあえずは、サービスパックかどうかの環境が
関係しているかもしれなので、エラーの起こるPCに
インストールしてやってみます。それでもだめなら、
テキスト型で出力して、インポートしてみます。
それでもだめなら、レジストリってのをこわごわやって
みます。

貴重なアドバイスを沢山親切に教えていただいて、
本当に感謝しております。
ありがとうございました。

miniより


>▼mini さん:
>>このサイトで記載の、
>>「以下のレジストリ キーの "TypeGuessRows" 値を変更します。」
>>って、どこの事ですか?どうやったら値を変更できますか?
>
>レジストリについての知識がなければ、下手に行わないほうがいいとは思う
>ので、周りに詳しい方はいらっしゃらないですか?
>#下手にレジストリを修正したり削除したりすると、PC自体が動かなくなったり
>#するんで。下手しなきゃ問題はないんですが。
>
>もし自分ひとりで行わなければいけないということであれば、念のために、
>最初にレジストリファイルの書き出しを行って、バックアップを取っておいた方が
>いいです。
>
>で、以下、確認する為の説明。
>
>******
>
>1.[スタートメニュー]-[ファイル名を指定して実行]を選択
>2.regedit と入力して、OKボタンを押す
>3.レジストリエディタが開かれるので、まずレジストリの書き出しを行う
>4.レジストリエディタの左メニューにある以下の中身を開く
>
>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
>
>5.右メニューに出てくるImportMixedTypesが"Text"になってるのを確認する
>6.同じく、TypeGuessRowsがいくつになってるかを確認する
>
>******
>
>という手段で確認はできます。
>
>ところで、リンクの所に書いてあった内容は理解できました?
>
>要は、上記で調べたTypeGuessRowsの行数までのデータをチェックして、
>その中が単一の型式だったらその型に、複数の型が存在していればImportMixedType
>の型に(通常Textになっていると思う)するようです。<Access
>
>で、想像したのは、「片方の上手くいくPCではその指定行までにテキスト型と判断される
>セルを含まれていて、上手くいかないPCではその指定行までにテキスト型と判断される
>セルを含んでいない」のではないかと思ったわけです。
>
>
>>>では、うまくいかないPCで、手動インポートした場合はどうでしょうか?
>>>あと、2台のPCのAccessはバージョン・パッチは共通ですか?
>>
>>手動でも試してみましたが、同じでした。アクセスのバージョンは
>>どちらも2000です。
>
>当ててあるパッチも同じですか?
><ServicePackを片方は当ててあって片方あててないとか。
>#もし”バグ”であるなら、ServicePackなどで修正されている可能性があるので。
>#それを片方にしか当てていないと、二つのPCで差が出てきます。
>
>>>可能性がないかどうかは分からないので、問題ないなら、試しに文字列にして
>>>テストされてはどうですか?
>>
>>文字列に変更したら、インポートが問題なく出来ました。
>
>問題なく出来たら、解決というわけではないんですね(笑)?
>自動的に、文字列にするということは出来ないということなんでしょうか?
>それが、正当な解決法だと思うのですが。
>
>どうしても無理ということであれば、
>該当ExcelファイルをCSV形式に変換しちゃって、そのCSVをAccessで読み込むという形
>すれば、エラーはでないかも?

 ───────────────────────────────────────  ■題名 : 参考までに。  ■名前 : yu-ji  ■日付 : 02/10/21(月) 11:26  -------------------------------------------------------------------------
   ▼mini さん:
>>問題なく出来たら、解決というわけではないんですね(笑)?
>>自動的に、文字列にするということは出来ないということなんでしょうか?
>>それが、正当な解決法だと思うのですが。
>>
>>どうしても無理ということであれば、
>>該当ExcelファイルをCSV形式に変換しちゃって、そのCSVをAccessで読み込むという形
>>すれば、エラーはでないかも?

>とりあえずは、サービスパックかどうかの環境が
>関係しているかもしれなので、エラーの起こるPCに
>インストールしてやってみます。それでもだめなら、
>テキスト型で出力して、インポートしてみます。
>それでもだめなら、レジストリってのをこわごわやって
>みます。

元のExcelは修正できないんですね(笑)?

CSVにして・・・ってやるより、他の方法のがいいかも。

Accessから、元となるExcelを問題の列をテキスト型に修正して別名で保存
(TEMPフォルダなんかに)した後、その修正済みExcelファイルAccessで読み込む
というやり方のほうが、(元Excelが変更できないということであれば)正攻法な
気がします。

一応、参考までにってことで。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 69