4章 カスタマイズ4-3フォーム

郵便番号参照コンボボックス作成[Access]


郵便番号テーブルを参照するコンボボックスを作成します。郵便番号から参照するコンボボックスと、住所から参照するコンボボックスを作ることができます。

[顧客]フォーム

  1. 準備
  2. 郵便番号参照コンボボックス作成
  3. 住所参照コンボボックス作成


<準備>
  1. 郵便番号テーブル Soraセットアップ先(C:\Program Files\Sora)にある郵便番号データベース(SoraYbn.mdb)の[郵便番号]テーブルをリンクします。
  2. 郵便番号クエリー Soraセットアップ先(C:\Program Files\Sora)にある郵便番号データベース(SoraYbn.mdb)の[郵便番号クエリー]クエリーをインポートします。
    SELECT 郵便番号.郵便番号7桁, [都道府県名] & [市区町村名] & [その他] AS 住所全体 FROM 郵便番号;
    

<郵便番号参照コンボボックス作成>
Soraフォームに[ComboYubin]コンボボックスを作成します。
[TextYubin]テキストボックスを作成します。コントロールソースを郵便番号のフィールドに設定します。
[TextJyusho]テキストボックスを作成します。コントロールソースを住所のフィールドに設定します
(Sora標準システム(APW97Smp.mdb)の[顧客]フォームにある[ComboYubin]コンボボックス等をコピーする方法が簡単です。)
[ComboYubin]コンボボックスの[更新後処理]、[フォーカス取得時]イベントに下記のイベントプロシージャを追加します。
(Sora標準システム(APW97Smp.mdb)の[顧客]フォームにあるイベントプロシージャをコピーする方法が簡単です。)
Private Sub ComboYubin_AfterUpdate()
'郵便番号コンボボックス:更新後処理
    Dim ctlTextY As TextBox
    Set ctlTextY = Me![TextYubin]   '郵便番号
    Dim ctlTextJ As TextBox
    Set ctlTextJ = Me![TextJyusho]  '住所
    Dim ctlMe As ComboBox
    Set ctlMe = Me![ComboYubin]     '郵便番号コンボボックス
    '[住所]更新
    If IsNull(ctlTextJ) Then
        ctlTextJ = ctlMe.Column(1)
    Else
        If Not (ctlTextJ Like ctlMe.Column(1) & "*") Then
            ctlTextJ = ctlMe.Column(1)
        End If
    End If
    '[郵便番号]更新
    ctlTextY = ctlMe.Column(0)
    ctlTextJ.SetFocus
End Sub

Private Sub ComboYubin_Enter()
'郵便番号コンボボックス:フォーカス取得時
    Dim ctlTextY As TextBox
    Set ctlTextY = Me![TextYubin]  '郵便番号
    Dim strBuf As String
    Dim ctlMe As ComboBox
    Set ctlMe = Me![ComboYubin]    '郵便番号コンボボックス
    If Not IsNull(ctlTextY) Then
        strBuf = Left(ctlTextY, 3)  '郵便番号取得
        ctlMe = ctlTextY
    Else
        strBuf = "1"        '郵便番号省略値
    End If
    With ctlMe
    .RowSourceType = "Table/Query"  '値集合タイプ
    .ColumnCount = 2                '列数
    .BoundColumn = 1                '連結列
    .ListRows = 8                   'リスト行数
    .AutoExpand = False             '自動拡張
    .RowSource = "SELECT * FROM 郵便番号クエリー WHERE 郵便番号7桁 Like '" & strBuf & "*';"
'    .Dropdown    '不要
    End With
End Sub

<住所参照コンボボックス作成>
Soraフォームに[ComboJyusho]コンボボックスを作成します。コントロールソースが郵便番号のフィールドの[TextYubin]テキストボックスを作成します。コントロールソースが住所のフィールドの[TextJyusho]テキストボックスを作成します。
(Sora標準システム(APW97Smp.mdb)の[顧客]フォームにある[ComboJyusho]コンボボックス等をコピーする方法が簡単です。)
[ComboJyusho]コンボボックスの[更新後処理]、[フォーカス取得時]イベントに下記のイベントプロシージャを追加します。
(Sora標準システム(APW97Smp.mdb)の[顧客]フォームにあるイベントプロシージャをコピーする方法が簡単です。)
Private Sub ComboJyusho_AfterUpdate()
'住所コンボボックス:更新後処理
    Dim ctlTextJ As TextBox
    Set ctlTextJ = Me![TextJyusho]  '住所
    Dim ctlTextY As TextBox
    Set ctlTextY = Me![TextYubin]   '郵便番号
    Dim ctlMe As ComboBox
    Set ctlMe = Me![ComboJyusho]    '住所コンボボックス
    '住所[TextJyusho]更新
    If IsNull(ctlTextJ) Then
        ctlTextJ = ctlMe.Column(0)
    Else
        If Not (ctlTextJ Like ctlMe.Column(0) & "*") Then
            ctlTextJ = ctlMe.Column(0)
        End If
    End If
    '[郵便番号]更新
    ctlTextY = ctlMe.Column(1)
    ctlTextJ.SetFocus
End Sub

Private Sub ComboJyusho_Enter()
'住所コンボボックス:フォーカス取得時
    Dim ctlTextJ As TextBox
    Set ctlTextJ = Me![TextJyusho]  '住所
    Dim strBuf As String
    Dim ctlMe As ComboBox
    Set ctlMe = Me![ComboJyusho]    '住所コンボボックス
    If Not IsNull(ctlTextJ) Then
        strBuf = Left(ctlTextJ, 5)      '住所取得
        ctlMe = ctlTextJ
    Else
        strBuf = "東京"         '住所省略値
    End If
    With ctlMe
    .RowSourceType = "Table/Query"  '値集合タイプ
    .ColumnCount = 2                '列数
    .BoundColumn = 1                '連結列
    .ListRows = 8                   'リスト行数
    .AutoExpand = False             '自動拡張
    .RowSource = "SELECT 住所全体, 郵便番号7桁 FROM 郵便番号クエリー WHERE 住所全体 Like '" & strBuf & "*';"
'    .Dropdown    '不要
    End With
End Sub