郵便番号を検索するAccess

データベースを作るためにAccessを使う、ではなく、データを活用するためにAccessを使いたい、そう考える方向けの内容です。インターネット時代は既に存在する大きなデータにデータベースを合わせる力が役立ちます。Accessを使用した郵便番号検索は、テーブル、クエリ、フォーム、VBAと幅広く利用体験ができます。Access初心者の方にも、Accessでどんなことができるかがイメージして頂けると思います。

一般的にはAccessをゼロから作ると考える方が多いですが、このインターネット時代は既に存在する大きなデータに(自分が)合わせる力が役立ちます。たとえば、何万件もあるCVSやExcelデータを入手して使いたい時どうしたらいいか、このブログではそれを解決します。

今回は「Accessで作る郵便番号検索データベース」について解説しますのでイメージは沸きやすいと思います。今回なぜ郵便番号検索を題材にしたのか、それはAccess初心者にまずは下記5点をざっと体験して欲しいと考えたからです。難しいシステムになるとポイント理解ができませんが、今回は本当に初心者向けのシンプルな題材なので記憶にも残りやすいはずです

 ① 既存データの取り込みは簡単(Excel→Access)
 ② 簡単なデータの加工技術(クエリ)
 ③ データベースの軽さを体感
 ④ フォーム作成の容易さと使用感
 ⑤ 簡単なVBAの体験

実際に手を動かして、Accessが思っていたより簡単で便利だと感じられたら嬉しいです。郵便番号という馴染みがあって膨大なデータを一度簡単に扱える経験をすれば、きっとAccessが楽しくなるはずです。なぜなら、個人であっても会社であっても大きなデータは溢れているからです。インターネット時代/ビックデータ時代に、自分が興味を持った膨大なデータを自在に操って人生楽しくしませんか?Excelでは決して味わうことのできない、自由で快適な世界がもう目の前に広がっています。さらにさらに、Accessをマスターすれば無限の可能性が広がることに気付くことになるでしょう。

それでは早速はじめましょう。

<手順(準備+実際)>

Access本体を準備する(要購入)

郵便番号データのダウンロード

Accessに郵便番号データを取り込む  テーブル作成/外部データの取り込み

Accessで郵便番号データを加工する  クエリ作成

郵便番号データをフォームで扱う   フォーム作成

データとWebを繋げる        作成・検索したデータをGoogleEarthで利用

① Microsoft Access 本体
② 郵便住所録CSV(全国)

  • Accessを起動
  • 外部データとして「KEN_ALL.CSV」をテーブルとして取り込む
  • クエリを使って、フィールドに名前を付ける、データの形を整える

まず、ここまでがテーブルとクエリについて触れるところです。最初に取り込んだテーブル、そしてクエリで整えたデータ、見た目は似ていますが違いは一目瞭然です。Excelとは異なり命令を与えればデータ量(行数)に関係なく、一瞬で思い通りにデータを整えられます。

  • 検索フォームを作る
  • Google earthと連携させる

ここでは、VBA(VisualBasicforApplications)の知識が必要です。でも、非常に容易なVBAだけを使用するのでご安心を。数行であってもお決まり文句のVBAであっても、自分で使った経験は大きいと思います。Excelで足踏みしている方も最初の一歩として踏み出しましょう。Officeであればほぼ共通したスキルとして役立ちます。

<さっそく作成開始>

Accessファイルを作成、外部CSVを取り込む

Accessを起動させたら、「空のデータベース」を選択して、名前を付けておきましょう。今回は「郵便番号検索」としておきます。デフォルトのテーブルを保存せずに閉じるところまで進みましょう。まず外部データリボン→インポートとリンク内にある新しいデータソース→ファイルから内のテキストファイルを選択。ダイアログボックスが開いたら、「KEN_ALL.CSV」を取り込みます。Access左隅にあるナビゲーションウィンドウ内のテーブルリストに「KEN_ALL」が入っていれば成功です。早速、カーソルを当てて右クリックして「開く」を選ぶと…Excel表示と似たものが作成されているはずです。

さて、ここで気付かれたでしょうか?このテーブル表にはフィールド名がありません。実は元データである「KEN_ALL.CSV」に記載がないから当然なのです。フィールド(項目)名は何が良いか?どうしたら自分にとって使いやすくなるか、考えてみましょう。

まず、フィールド名を付けてみる

Accessに取り込んだデータをよーく見てみます。ここで一つ注意が必要です。思わず「フィールド1」など【テーブルのフィールド名】を修正したくなりますがこれをやってはダメです。理由があります、取り込んだデータ(テーブル)を基にAccessで処理をするわけなので、もし今後更新された郵便番号データをAccessに再取り込みをしたらどうでしょう。取り込んだデータの形や名前が変わっていると同じ処理が正しく実行できないからです。例えば、テーブル「フィールド7」を「都道府県」と変更していた場合、再びデータ取り込みで「フィールド7」と上書きされ、クエリ(テーブル情報を基に動くプログラム処理)が動くとき、参照指定されていた「都道府県」が見つからずにエラーが生じてしまうのです。

クエリの基本的な使用方法で、【フィールド名:数式】とすればフィールド名を変更できます。数式内にはExcelでお馴染みのLeft関数、Right関数を使用しています。これらの基本的なところは自己学習でお願いしたいのですが、Accessに興味を持たれた方なら理解は容易でしょう。

クエリ設定画面(クエリデザインビュー)
  1. 郵便番号_前半: Left([フィールド3],3)
  2. 郵便番号_後半: Right([フィールド3],4)
  3. 郵便番号: [郵便番号_前半] & “-” & [郵便番号_後半]
  4. 都道府県: フィールド7
  5. 市町村: フィールド8
  6. その他: フィールド9
  7. 都道府県_カナ: フィールド4
  8. 市町村_カナ: フィールド5
  9. その他_カナ: フィールド6
  10. 住所: [都道府県] & [市町村] & [その他]

ざっと目を通すと、郵便局から提供されたCSVの「フィールド1,2,10-15」は一見何だかよくわかりません。でも大丈夫です、Accessでは不要な情報はそのまま放置してください。Excelと異なり最終的に(クエリで)必要な情報のみを取り出せるからです。理解できない方、ここではそう思って進んでください。「フィールド3-9」はフィールド名をつけ直しただけなので理解は容易だと思います。なお、「住所」のように新たにつけたフィールド名を用いて、クエリを作成することができます。

さて、問題となるのは「フィールド3」です。郵便番号ということは理解できますが「-(ハイフン)」が入ってないので、前半と後半に分けたうえでお決まりの形に整えています。これは簡単な例ですが、「既存のデータにAccessを合わせる」この課題を克服できれば自由にデータベースを使えるようになります

元データ「KEN_ALL」 ★デーブル★
クエリ加工データ ★クエリ★

いかがでしょうか?上下を見比べて頂ければ一目瞭然、簡単な操作で12万行あまりが全て非常に美しいデータとなりました。ついでにクエリを使って、必要な項目だけを抽出しました。ちなみに、これをcopy&PasteでExcelに移行すれば立派なExcelデータ表にもなります。ここまででAccess機能(データを加工する)としては十分活用できているので、終了しても悪くありません。しかし、12万行から特定のデータを抽出したい、そうなればExcelでは簡単にいかないでしょう。そこでついでに、Accessのフォーム機能、合わせてVBAまで体験しましょう。 

検索フォームを作るポイント2点を意識する

Accessのフォーム機能は必ずしもないといけないわけではありません。理由は簡単です、データベースはデータが命なので「データそのもの」テーブルと「加工されたデータ」クエリがあれば事足りるわけです。しかし、せっかくなら見た目を整えて入力と閲覧、データ検索を容易にしたいのでフォーム機能を利用します。ここで、フォームに関して絶対に外せないポイントがあります。まず、フォームの利用目的は「表示/入力/検索」の3つがあります。次に、フォーム上の各データBOXは「データそのものと連結するもの/しないもの」の2つがあります。

【赤線】非連結→データベースと連結していない 【青線】データベースの情報

後者は常に意識しておかなければないません!赤線に囲まれた4つのボックス内に「非連結」と書かれています。ここには抽出するための条件を入力しますが、何を入力してもテーブルデータと繋がっておらずデータベースには影響しません(安心)。一方、青線に囲まれた3つはテーブル(KEN_ALL)と繋がっており、ここを編集するとテーブルデータが変更されてしまいデータを壊す場合もあります(不安)。このように2種類の情報(安心、不安)を意識的に区別して利用すれば、検索フォームは簡単に扱えます。逆にここが理解できていないと、フォームを作ったことでかえってデータベースを壊すことになるので注意が必要です。なお、Accessでは青線内は編集できないように簡単に設定ができるので安心してください(別途解説)。フォーム作成では各ボックスに対してプロパティ(細かい設定、例えば名前、データ連結、修正の有無など)が準備されています。初めて触れると設定項目が多すぎて心が折れそうになりますが、必要なものだけ使えばよくこだわれば簡単に細かい設定ができる便利なものです。

  1. 書式   見た目設定が主。枠線や背景色、文字フォントなど
  2. データ  データベースで最も重要な設定。データの修正、追加、削除の許可
  3. イベント VBAを使うときにとても活躍。タイミングよく動作が指示できる
  4. その他  BOXの名前、IME入力モード(日本語など)、Enterキーの動作設定
  5. すべて  上記4つの集合したもの、設定全体を最終確認するときだけ利用する

上に示したフォームには、7つのBOXそれぞれに必要な設定があるので、必要なものだけをピックアップします。「2.データ」これは極めて重要で、上記した「データと連結する」、「データが壊れる」に関わる重要な設定なので、ここを変更する際には慎重さが要求されます。

  1. 地方名_検索用(作成中)

★ここでAccessの難しさを考える★フォーム内のボックスには3種類の型、すなわち①テキストボックス②リストボックス③コンボボックスがあります。そして重要なのは、どの型を選択するかでプロパティ設定が異なる、つまりボックスに設定できる項目が増減するということです。例えば、「都道府県」はデフォルトでテキストボックスですが、コンボボックスに変えるとリスト一覧を表示させるための設定(リストをどの情報から作るかなど)が追加されます。フォーム上の見た目はほぼ変わらないので、自分が何をしているか意識してないとスムーズな設定はできません。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL