メールマガジン【アクセスで作るシリーズ】


バックナンバー 【住所録ソフト編】 Vol.14
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

    ACCESSで作るシリーズ  【住所録ソフト編】

    発 行 : Yoshihisa Fukuda          2001.01.27 Vol.14

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
メールマガジン「ACCESSで作るシリーズ」をご購読の皆様へ

メールマガジン「ACCESSで作るシリーズ」発行者の福田です。

昨日、休刊のお知らせをいたしましたが、1日遅れで配信いたします。


今回は、郵便番号テーブルのメンテナンス画面の作成です。
______________________________________
 □ 郵便番号テーブルのメンテナンス画面の機能を考える。

 まず、メンテナンス画面の機能を考えてみましょう。

 郵便番号データは、郵政省のホームページからダウンロードする事を前提とします。

 郵便番号や住所に変更があった場合も、郵政省のホームページにある差分データを
 取り込める様な機能も用意しましょう。

 しかし、それだけでは少し不安なので、自分で自由に修正・追加・削除ができる
 画面も必要でしょう。

 そこで郵便番号テーブルのメンテナンス画面の機能を以下の様にします。

 1.郵政省のホームページにある差分データを取り込む機能を付ける。
 2.新規に郵便番号、住所(都道府県名、市区町村名、町域名)を登録できる様に
   する。
 3.必要ない住所データを削除できる様にする。
 4.郵便番号、住所(都道府県名、市区町村名、町域名)の修正ができる様にする。
 5.郵便番号、住所の修正を容易にするため、都道府県、市区町村で絞込みができ
   る様にする。
 6.郵便番号は - 無しの7桁とする。

※現在未使用の地方公共団体コード、旧郵便番号、都道府県名、市区町村名、町域名
 のそれぞれのカナ等の修正は、今回は省いています。
 これらは、将来、機能を拡張する時に必要となった時点で改めて考えていきたいと
 思います。
______________________________________
 □ 都道府県テーブルを用意する。

 郵便番号テーブルのメンテナンス画面の機能の3.で都道府県、市区町村で絞込み
 ができる様にする としましたが、具体的にはメンテナンス画面の上部に都道府県
 と市区町村を指定するコンボボックスを付けます。

 このコンボボックスの元データは、郵便番号テーブルの都道府県、市区町村を一意
 にして、設定しても良いのですが、郵便番号データの件数が多いため、コンボボッ
 クスを開くのに、少々時間がかかります。

 市区町村は仕方ないとして、都道府県に関してはデータ件数が少ない(都道府県は
 全部で47)事と、滅多に変わらない(都道府県の名称が変わったり、増減する事
 は極めてまれである)事から、都道府県のみテーブルを作成します。

 【都道府県テーブル作成手順】

1.住所録ソフトのデータベース[Address.mdb]を開きます。

2.データベースウィンドウの[テーブル]タブで、[新規作成]ボタンを押下します。

3.[テーブルの新規作成]ダイアログで[デザインビュー]を選択し、[OK]ボタンを
  押下します。

4.フィールド名、データ型、説明を以下のように設定します。
   _________________________
   フィールド名  データ型     説明      
   -------------------------
   ID       オートナンバー型 ID       
   Prefecture   テキスト型    都道府県    
   ━━━━━━━━━━━━━━━━━━━━━━━━━

5.次に各フィールドに対して、[フィールドサイズ]と[標題]プロパティを設定し
  ます。
   _______________________
   フィールド名   サイズ 標題      
   -----------------------
   ID        長整数型 ID       
   Prefecture    10 都道府県    
   ━━━━━━━━━━━━━━━━━━━━━━━

6.IDを主キーに設定します。

7.全ての設定が終わったら、テーブルを保存しましょう。
  メニューの[ファイル]-[名前を付けて保存/エクスポート]を選択します。
  [名前を付けて保存]ダイアログで[カレントデータベース]を選び[新しい名前]
  に[PrefectureTable]と入力して[OK]ボタンを押します。
  保存出来たら、テーブルデザインのウィンドウの右上の[×]ボタンを押して
  ウィンドウを閉じます。

 【都道府県テーブルのデータ設定】

 次に、都道府県テーブルにデータを設定します。
 データベースウィンドウの[テーブル]タブで都道府県テーブル[PrefectureTable]
 を選択し[開く]ボタンを押下します。

 次に、以下の順番でデータを入力しましょう。

 全国、 北海道、青森県、岩手県、 宮城県、秋田県、 山形県、福島県、茨城県、
 栃木県、群馬県、埼玉県、千葉県、 東京都、神奈川県、新潟県、富山県、石川県、
 福井県、山梨県、長野県、岐阜県、 静岡県、愛知県、 三重県、滋賀県、京都府、
 大阪府、兵庫県、奈良県、和歌山県、鳥取県、島根県、 岡山県、広島県、山口県、
 徳島県、香川県、愛媛県、高知県、 福岡県、佐賀県、 長崎県、熊本県、大分県、
 宮崎県、鹿児島県、沖縄県

 以上、47都道府県+全国の48件のデータを登録します。

※ ホームページで公開しております、サンプルに、この都道府県テーブルがデータ
  登録済みの状態で入っておりますので、ご利用下さい。
______________________________________
 □ 郵便番号テーブルのメンテナンス画面を作成する。

 では次に、郵便番号テーブルのメンテナンス画面を作成しましょう。

1.住所録ソフトのデータベース[Address.mdb]を開きます。

2.データベースウィンドウの[フォーム]タブを選択します。

3.[新規作成]ボタンを押下し、[フォームの新規作成]ダイアログで[フォームウィ
  ザード]を選択し、[元になるテーブル/クエリーの選択]で前回作成したテーブル
  [ZipCodeTable]を選択して[OK]ボタンを押下します。

4.[選択可能なフィールド]に表示されているフィールドの中から[ZipCode]
  [Address1][Address2][Address3]を選択します。

5.[次へ]ボタンを押下して[フォームの表示形式を選択して下さい]の画面で[表
  形式]を選択します。

6.[次へ]ボタンを押下して[スタイルを選択して下さい]の画面で好みのスタイルを
  選択します。(サンプルでは[標準]を選択しています)

7.[次へ]ボタンを押下して[フォーム名を指定して下さい]で[ZipCodeForm]と入力
  します。

8.[フォームを作成した後に行うことを選択して下さい]で[フォームのデザインを
  編集する]を選択して[完了]ボタンを押下します。

9.例によって、自分の好みにレイアウトを修正しましょう。
  また、フォームヘッダーのフィールド標題の上辺りにコンボボックスを作成する
  ので少しスペースを空けておきます。

10.ツールボックスのコンボボックスを選択し、コントロールウィザードを解除した
  状態で、フォームヘッダーの上部(先程空けておいたスペース)でクリックし
  ます。

11.同じ要領でコンボボックスを左右に2個並べて配置します。

12.左側のコンボボックスの適当な位置に都道府県と言うラベルを付けます。
  また、右側のコンボボックスにも市区町村と言うラベルを付けます。

13.左側のコンボボックスのプロパティを以下の様に設定します。

  名前     ・・・ Address1Extract
  値集合ソース ・・・ SELECT PrefectureTable.Prefecture
             FROM PrefectureTable ORDER BY PrefectureTable.ID;
  ※ これは1行で続けて[値集合ソース]プロパティに設定します。

  更新後処理  ・・・ イベントプロシージャ
  ※ 右端の[...]ボタンを押下し、モジュールウィンドウで以下のコードを記述
    する

Private Sub Address1Extract_AfterUpdate()
Dim CriteriaStr As String

Me.Address2Extract.Requery
Me.Address2Extract = Null
If Not IsNull([Forms]![ZipCodeForm]![Address1Extract]) And _
[Forms]![ZipCodeForm]![Address1Extract] <> "全国" Then
CriteriaStr = "Address1='" & _
[Forms]![ZipCodeForm]![Address1Extract] & "'"
Else
CriteriaStr = ""
End If
Me.Filter = CriteriaStr
If IsNull(CriteriaStr) Then
Me.FilterOn = False
Else
Me.FilterOn = True
End If
Me.Requery
End Sub

14.右側のコンボボックスのプロパティを以下の様に設定します。

  名前     ・・・ Address2Extract
  値集合ソース ・・・
 SELECT DISTINCT ZipCodeTable.Address2 FROM ZipCodeTable
 WHERE (((ZipCodeTable.Address1)=[Forms]![ZipCodeForm]![Address1Extract]));
 ※ これも1行で続けて[値集合ソース]プロパティに設定します。

  更新後処理  ・・・ イベントプロシージャ
  ※ 右端の[...]ボタンを押下し、モジュールウィンドウで以下のコードを記述
    する

Private Sub Address2Extract_AfterUpdate()
Dim CriteriaStr As String
Dim AndStr As String

If Not IsNull([Forms]![ZipCodeForm]![Address1Extract]) Then
CriteriaStr = "Address1='" & _
           [Forms]![ZipCodeForm]![Address1Extract] & "'"
AndStr = " AND "
Else
CriteriaStr = ""
AndStr = ""
End If
If Not IsNull([Forms]![ZipCodeForm]![Address2Extract]) Then
CriteriaStr = CriteriaStr & AndStr & "Address2='" & _
           [Forms]![ZipCodeForm]![Address2Extract] & "'"
End If
Me.Filter = CriteriaStr
If IsNull(CriteriaStr) Then
Me.FilterOn = False
Else
Me.FilterOn = True
End If
Me.Requery
End Sub

これで、手入力による郵便番号データのメンテナンスができる様になりました。

郵便番号は - 無しで7桁の数字を連続して入力します。
上部の都道府県コンボボックスで都道府県を選択すると、選択した都道府県のデータ
のみが表示されます。
また、市区町村コンボボックスでは、都道府県コンボボックスで選択した都道府県に
該当する市区町村が選択でき、選択した市区町村のデータのみが表示されます。

次回は、郵政省の差分データを取り込む機能を作成したいと思います。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元  :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
  ご質問等   :fukud@nifty.com

◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
  しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://homepage2.nifty.com/f-soft/
◇ 登録・解除  :http://homepage2.nifty.com/f-soft/

 Copyright(C) 2001-2002 Yoshihisa Fukuda All rights reserved.

◇転載について
 このメールマガジンの無断転載などは、一切禁止です。
 転載をご希望の方は、事前にメールで連絡をください。
◇免責
 このメールマガジン及びホームページの内容による、いかなる損害、障害などに
 関して発行者は一切の責任を負いません。
 掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□