2000 11 28

役立たず

メールを受信。

引き継ぎファイルを読み込んだら、フォーマットエラーになりました。 該当レコードの、配送先名が1バイト多いか、配送先住所の前にスペースが入っているようです。 調査願います。

引き継ぎファイルは、固定長のテキストファイル。 それに合うように、わざわざ Access2000 上にテーブルを定義して、そこにデータを書き込み、TransferText で書き出したものだ。 フォーマットがずれることは無いはずなんだけどな。 そう思いながらも、現地から送ってもらったデータを使って、引き継ぎファイルを作ってみたら …ずれてるよ、おい。

問題のレコードを眺めてみる。 ローマ数字の2が入っている。 ひょっとして、こいつのせいか? と、ローマ数字の2を、普通の2に置き換えてやってみる。 上手くいく。 いろいろ試してみるに、 機種依存文字が入っていると、固定長テキスト出力したときに桁ずれが起きる らしい。 本来は、元データを作る方で、機種依存文字を入れないのがルール。 つまり、ここにこんな文字が入っていることが間違いなのだな。 とりあえず俺のせいじゃないことは判った。

機種依存文字って言うけど、こいつら、Windows 独自の文字のはずだよな。 何でそんなものがちゃんと扱えないんだ? と、Microsoft のサイトを検索したら、該当する不具合情報があった。 それによると、 ギリシャ文字,ロシア文字,罫線素片,囲み英数字,アラビア数字,単位記号,省略文字,囲み文字,年号,数学記号が入っていると駄目 らしい。 原因不明で調査中らしい。 Access97 では発生しないらしい。 何の解決にもならんな。 すみませんの一言ぐらい載せとけよ。