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


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

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

    発 行 : Yoshihisa Fukuda          2001.01.19 Vol.13

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は郵便番号に該当する住所が複数ある場合の住所一覧フォームの作成です。
______________________________________
 □ 住所一覧フォームを作成する。

 郵便番号に該当する住所が複数ある場合に、その住所を一覧表示するフォームを
 作成しましょう。

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

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

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

4.フォームを選択した状態で、以下のプロパティを設定します。

  表題         ・・・ 住所一覧
  レコードセレクタ   ・・・ いいえ
  移動ボタン      ・・・ いいえ
  コントロールボックス ・・・ いいえ

5.ツールバーのリストボックスを選択し、フォームの左上あたりの適当なところで
  クリックします。

6.[リストボックスウィザード]ダイアログが開いたら[テーブルまたはクエリーの
  値を表示する]を選択し[次へ]ボタンを押下します。

7.[リストボックスの値の取得元となるテーブルまたはクエリーを選択します]で
  [ZipCodeTable]を選択し[次へ]ボタンを押下します。

8.選択可能なフィールドから[ZipCode][Address1][Address2][Address3]を選択し
  [次へ]ボタンを押下します。

9.[表示しないキー列]のチェックが付いた状態で[次へ]ボタンを押下します。

10.[リストボックスに付けるラベルを指定して下さい]で[住所一覧]と入力して
  [完了]ボタンを押下します。

11.次に[閉じる]ボタンを付けましょう。
  以下の手順で[閉じる]ボタンを作成して下さい。

 (1)ツールバーの[コマンドボタン]を選択します。

 (2)ツールバーの[コントロールウィザード]を選択した状態で、フォームの
    [閉じる]ボタンを作成したい所でクリックします。

 (3)[コマンドボタンウィザード]ダイアログが開いたら、[種類] の所で
    [フォームの操作]を選択し、[ボタンの動作]の所を[フォームを閉じる]を
    選択します。

 (4)[次へ]ボタンを押下し、[文字列]を選択し、横の入力フィールドに[閉じる]
    と入力します。

 (5)[次へ]ボタンを押下し[ボタン名を指定して下さい]の所に[ExitBtn]と入力
    して[完了]ボタンを押下します。

これで一応、住所一覧フォームの概観ができました。
後は、先程作成したリストボックスの細かい設定を行います。

12.先程作成したリストボックスを選択し、[名前]プロパティに[AddrList]と設定
  します。

13.[値集合ソース]プロパティにカーソルを移動し、右端の[...]ボタンを押下します。

14.クエリービルダが開いたら、まず[ID]フィールドの[表示]のチェックを外します。

15.次に[ZipCode]フィールドの[表示]のチェックを外し[抽出条件]に

Left([Forms]![AddressForm]![ZipCode],3) & Right([Forms]![AddressForm]![ZipCode],4)

  と入力します。

16.クエリービルダを保存して終了します。

17.[列数]プロパティを[3]にします。
  また、[列幅]プロパティを削除しましょう。
  (体裁よくしたい人は、適当な値で[列幅]プロパティを設定して下さい)

18.[ダブルクリック]プロパティへカーソルを移動し[イベントプロシージャ]にして
  右端の[...]ボタンを押下します。

19.モジュールウィンドウが開いたら、以下のコードを記述します。

Private Sub AddrList_DblClick(Cancel As Integer)
Dim varItm As Variant

For Each varItm In Me.AddrList.ItemsSelected
Forms![AddressForm]![Address] = Me.AddrList.Column(0, varItm) & _
Me.AddrList.Column(1, varItm) & _
Me.AddrList.Column(2, varItm)
Next varItm
DoCmd.Close
End Sub

これで住所一覧フォームは完成です。

フォームを[AddrListForm]と言う名前で保存して終了しましょう。
______________________________________
 □ 住所フォームに住所一覧呼び出しプログラムを追加する。

最後に住所フォームの[郵便番号<=>住所変換]ボタンで該当住所が複数あった場合、
この住所一覧フォームを呼び出すコードを記述します。

20.住所フォームをデザインで開いて[郵便番号<=>住所変換]ボタンを選択し、
  [クリック時]プロパティにカーソルを移動し右端の[...]ボタンを押下します。

21.既に、前に書いたコードが表示されるので、そのコードの中の

  ZipFind = Left(Me.ZipCode, 3) & Right(Me.ZipCode, 4)

  と

  Set Addr_DB = CurrentDb

  の間に、以下のコードを入力します。

  If DCount("*", "ZipCodeTable", ZipFind) > 1 Then
    DoCmd.OpenForm "AddrListForm"
    Exit Sub
  End If

22.モジュールウィンドウを閉じて、フォームを保存して終了します。

これで、郵便番号に該当する住所が複数ある場合、一覧選択できる様になりました。

試しに、郵便番号に[028-7302]と入力して、[郵便番号<=>住所変換]ボタンを押下して
見て下さい。

岩手県岩手郡松尾村 までが同じで、八幡平温泉郷、松川温泉、寄木 と言う3つの
住所が出てきますね。

ここで真ん中の 岩手県岩手郡松尾村松川温泉 を選択してみて下さい。
住所フォームの住所欄に 岩手県岩手郡松尾村松川温泉 と入りましたか。

今回はここまでです。
次回は郵便番号テーブルのメンテナンス画面を考えてみたいと思います。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ 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.

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