- ベストアンサー
AccessMDEによる奇奇怪怪な現象
ホストが作成した固定長のテキストファイルをAccess内のテーブルに取り込み、指定したフォルダにテキスト出力するという処理を行っています。妙な現象が起こっているので投稿させていただきました。 環境的には、WinXP+Access2000でMDEファイルを作成し、Win2000+Accessランタイムのみの端末でMDEを実行するというようになっております。ちなみにランタイムのみの端末は今まで一切Accessをインストールしたことはございません。 (現象1) ホストデータの中にある「ド」という文字列が、最終的に作成されるテキストファイルでは「 h」に化けてしまいます。 ただし、Win2000+Access2000の端末で実行すると化けません。 (現象2) 化けた項目を確認しようとしてテーブルを覗くと、「ド」以降の文字列がありません。「もしや改行されているのか?」と思い行の高さを広げてみましたがやはりありませんでした。しかし、最終的に作成されたテキストファイルには、「ド」は化けているとしてもそれ以降の文字列は正常に表示されております。この現象は、「ド」が化けなかった場合(Win2000+Access2000)でも発生しております。 (補足) とりあえず「ド」が原因かな?と思い、ホストデータを編集して、全ての行のいたるところに「ド」を入れてみました。結果は、全て正常に出力されました。テーブル内も正常でした。 これらの奇奇怪怪な現象の原因を調査中です。何か手がかりとなりそうな事柄をございましたら 是非ご教授ください。宜しくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ドのコードが16進で 83 68 h のコードが16進で 68 データがちぎれているのでは?
その他の回答 (2)
実験しようがないため単なる推定ですが(^^; 「固定長」で処理しようとして「処理できず化けた文字」により区切りの位置がずれている。 もしこのような状況であれば、「固定長」ではなく「TAB文字」など、特殊文字によって区切ってはいかがでしょうか?
お礼
fuuten_no_neko様、再度のご回答ありがとうございます。 とりあえずお手上げ状態なので最初に作った人間に送って見てもらったところ、「数年前にAccess内での文字の取り扱いがUnicodeに統一されたが、インポート機能はそれをカバーしていないことが考えられる」ということで、ホスト側における文字化けの方を対処して解決する方向となりました。私自身、結局真相はわからないのですが、fuuten_no_neko様のおっしゃるようにホストの文字化けが区切り位置に影響しているのは間違いないようなので、これで終わりにしたいと思います。皆様、ありがとうございました。
- O_cyan
- ベストアンサー率59% (745/1260)
ホストはSQLServerでしょうか? クライアントマシンのシステムコードページがSQLServer の文字セットと一致していない場合、予測できない動作をすることがあります。 クライアントではオペレーティングシステムで指定された言語により使用される文字セットがシステムコードページとなります。Windows2000以降を使っている場合は、既定のロケールです。サーバーでは文字セットはSQLServerのインストール中に指定されます。 Accessプロジェクト(*.adp)ではクライアントコンピュータのシステムコードページがクライアントの接続先SQLServerの文字セットと一致しない場合、ANSIテキスト フィールドを含むクエリ結果が正しく表示されません。 サーバーにUnicodeで保存されたデータでは発生しません。 という問題がありましたがお役に立つかどうか・・?
お礼
O_cyan様、ご回答ありがとうございます。 ホストというのはSQLServerではなく、AS400という ホストコンピュータです。ただ、文字セット云々という ところは確かに原因になっているようでして、でも イマイチ原因やその課程がわかっておりません。
補足
AS400というホストマシンで処理されたデータがテキストファイルに出力され、それをAccessがインポートして、さらにフォルダに振り分けてテキスト出力します。 文字化けが発生するのは「メモ」という項目です。昨夜判明したのですが、AS400内で処理できない文字がありそれは「・」に化けて出力されます。これをAccessがインポートすると(現象1)にある文字化けが発生します。ただし、それは別のレコードの「メモ」で発生するんです。1レコード目に「・」が入っていると5レコード目のメモ欄のどれか1文字が化けるという感じです。 さらに、この化けてしまう5レコード目のデータを10行目に移動すると、今度はこっちで化けます。9行目にコピーしても、10行目が化けます。
お礼
fuuten_no_neko様、ご回答ありがとうございます。 コードに関しては気が付きませんでした。 頭に入れておきます。