<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--外部データの活用
  1 2 3 4 5



■テキストファイルをインポートまたはリンクする場合

「テキストファイル」といいますのは、要するに「文字だけで構成されたファイル」っていうことで、コンピュータの基本の基本のファイル形式です。
Windowsのアクセサリの「メモ帳」とかで開いて見ることができるようなファイルのことで、txtとかcsvとかいう拡張子が付くことが多いですね。
もっとも、「メモ帳」っていうのは、あんまり大きなファイルを開くことはできませんが(64kbマデ)、あとはー・・・いわゆる「エディタ」って呼ばれるソフトウェアで(ワードパットとか、秀丸とか、ああいうやつ)開くことができる、素〜なファイルってことですね。素。
文字だけですから、罫線とか書式とか一切持ちません。いいとこ「改行マーク」くらい。

何の飾り気もないし、このままじゃデータとしては読みにくいし使い物にならないですけれど、ほとんどのソフトウェアが「テキスト形式に変換して保存」とか、そういう機能を持ち合わせていますから、異なるソフトウェア間でデータのやり取りをしなくちゃいけないときの「最終兵器」として用いられることが多いです。

でもって、大きく分けて2種類あるんです。

こういうのが、↑「可変長」とか「区切り記号付き」とかいうタイプのテキストファイルです。
ところどころ、カンマで区切られてるの、わかります?わかんない??いいえ、わかってらっしゃいます。
Accessのテーブルとしてこのテキストファイルを取り込むときに、カンマの位置をたよりに、フィールドとフィールドの区切れ目を判断し、改行マークをたよりに、1レコード分のデータを判断します。

なので・・・。「金額」のとこ、3桁区切りのカンマがついてますよね。これがあると・・・28,000が28と000の二つの分かれちゃって、めちゃくちゃになっちゃうんです。Accessを責めることはできませんよ。言われたとおりに仕事してるんですから。こういう場合、ダブルコーテーションで囲んでテキストファイルが作成されたりすることがたまにあります。「金額」だけ、ダブルコーテーションで囲んでますよね。これなら分断されずに28,000としてインポートされますが、この辺の扱い方如何で、数値として取り込みたいのにテキスト型になってしまったりします。テキストファイル状態にしてもなお「3桁区切りのカンマ」がこのように存在しているというのは、いろいろあとで問題が起きそうですが。。。

モウひとつは↑「固定長」と呼ばれるタイプのテキストファイルです。
こんな感じで、「何桁目から商品名、何桁目から個数、何桁目から単価・・・」と、そろってるようなやつです。そろってるというか、項目ごとに「開始位置」が決まっているような感じですね。で、Accessのテーブルとかにインポートするとき、「1桁目から10桁目までがNoで、11桁目から20桁目までが商品名で・・・」という具合に、フィールドの区切れ目を桁数(文字数)で判断します。これが「固定長」。

余談ですけど、こういう場合、このテキストファイルを作成したソフトウェアやデータベース側で、「カンマとかの書式を省いた、実データのみ」の状態にすべきです。テキストファイルにしちゃってからじゃ、どうしようもなくなっちゃうこともありますからね。Accessに限らずコンピュータ全般に於いて、「3桁区切りのカンマ」というのはデータそのものではなくて「書式」です。実際に3桁ずつカンマが入ってるわけではなく、表示上そうしているだけなので、テキストファイルにしたときには 28000 となっているべきなのです。

テキストファイルをインポートする仕組みを作る場合は、こうしたことが多々考えられますから、とにかく少ない件数で何度か繰り返しテストをしてみることですね。カンマが1個抜けてしまってたり、余分なカンマが入ってたりしても、テキストファイルの状態では単なる「文字」ですんで何のエラーにもなりませんけど、ひとたび、Accessのテーブルにインポートしてこようとした場合、ずれちゃったりフィールドの区切れ目がわかんなかったりして容赦なくエラーになります。


じゃ、ちょっとやってみましょうか。

途中まではおなじです。メニューバーから[ファイル]→[外部データの取り込み]→[インポート]を選びます。

で、ファイルを選ぶダイアログが出てきたら・・・下部分の「ファイルの種類」を選びます。

いろいろ出てまいりますでしょう?中に「テキストファイル」というのがあったら、これを選びましょう。
すると、「テキストインポートウィザード」というのが勝手に始まって、取り込みのお手伝いをしてくれます。

「固定長」なのか「区切り記号付き」なのかは、だいたい自動的に判別してくれますので、確認だけでよいと思います。

上の図のように、ところどころナカグロ(・)で区切られている場合はだいたい「タブ記号で区切られているテキストファイル、タブ区切りファイル」かもしれないですね。タブ記号って、目には見えないじゃないですか。ふつうは・・・。なのでこういうときはこんなふうにナカグロで表現されることもあるみたいです。

だいたい、「タブ記号かしら?」って自動的に判別してくれて、フィールドの区切れ目を判断してくれるはずです。この画面で、フィールドの区切れ目がめちゃくちゃだったり正しくなかったら、区切り記号を変更して試してみるとよいでしょう。

まあ、ふつうのテキストファイルなら、「タブ」か「カンマ」が多いんですけど・・・もちろん、他の記号で区切って作成されている場合もありますので、そのテキストファイル作った人に聞いたりとかソフトウェアとか調べて、事前に確認しておいた方がいいですね。

あと、左の上のほうに「先頭行をフィールド名として使う」っていう項目をチェックすると、1レコード目を「フィールド名」とみなしてくれます。これも、もとのテキストファイルがどういう形で作成されてるかによっては、活躍しそうです。それとそれと、右の方を見ると「テキスト区切り記号」っていうのがあって、ほら、さっき、ダブルコーテーションで区切られてテキストファイルが作成されることもあるよ、みたいなこと、お話しましたでしょう?え゙〜忘れちゃったんですかーもーお話したじゃないですカーぷんぷん。
とにかく、なんか「ダブルコーテーションで囲まれちゃってるなぁ」というフィールドがあったら、「テキスト区切り記号」っていうところを調節してみてください。

で、このテキストファイルを、「新しいテーブル」として取り込むのか、「すでに作ってあるテーブルの中に継ぎ足す」つもりで取り込むのか(継ぎ足すって言っても横に継ぎ足すんじゃないですよ。レコードを追加する、っていう意味です)
今日は、テーブル作ってないんで、新規テーブルとして取り込みます。すでに作ってあるテーブルに取り込む場合は、テーブル名を一覧から選んでちょ。

お次は・・・。あーまだあるんですよ。そうなんです。めんどいですねぇ。ほんとに。テキストファイルですからね。データベースとして扱うためにはいろいろ指示してやらないとならないんですよ。テキストファイルですから。だからね、「最終手段」って考えてくださいよ。取り込むのめんどくさいんですから。
「別に面倒くさくてもいいんだ」って言う人もいるかもしれないですけど、そりゃあいただけません。めんどうくさいことを極力やらずに済むように考えることが、すなわち真のデータベース使いです。優秀な人ほどめんどうがりで、めんどうだから楽するために知恵を絞って工夫するのです。難しいことを知っているだけが上級者ではございませんのよ。実際に楽になるか、ということではなく、「もっと楽な方法はないもんか・・・」と常に常に考えているその姿勢こそが、真のデータベース使いなのです。

お話を元に戻しまして、今度は、それぞれのフィールドが数値なのか文字なのかをしっかり教えてやります。

だいたい自動判別してくれるんですが、イマイチわかってないときがありますから、1つずつ確認してあげてください。
上のように、「金額」っていうとこをどっかしらクリックすると黒く反転しますんで、そしてから「フィールド名」とか「データ型」とかの変更をしてやります。
フィールド名は後から変えてもいいかもしれないですけど、データ型は、この時点で正しく指定してあげないといけないんじゃないかと思うです。

で、「主キー」の登場です。「主キーってどうしてつけなきゃいけないの?」っていう人は・・・いませんよね???大丈夫です?

主キーにすべきフィールドがあるならばそいつを主キーにして、特に見当たらなかったら「主キーを設定しない」でインポートしておいて、後で考えればよいと思います。わたしは、意味もなくオートナンバー型の主キーを設定するのは少々反対な主義。目的があってオートナンバー型にするならいいですが、よくわかんないから、とかいう理由で適当につけても、ほとんど意味をなしませんし、邪魔になることもあります。「主キー」というのは、そのテーブルの中で一番大切なフィールドのことです。「後から取ってつけ」的存在になってしまわないように理解を深めていってください。

で、最後に、インポート先のテーブルを指定する画面になります。

今回は「新規テーブル」を作成するようにしましたんで、こういう名前のテーブルができることになります。気に入らなかったら変更しましょう。
おなじ名前のテーブルがすでにある場合は、メッセージが出て、上書きします?と聞いてきまして上書きしようとしますから上書きされちゃったら困る場合は注意してくださいね。注意だけしてもだめですよ。テーブル名を変えるとかしてください。