Microsoft Access Club >初心者講座 >Mail管理ソフト >このページ >次頁 - 前項


個人情報の登録フォームの作成 - 2:Mail管理ソフト14



前頁に引き続き、個人情報を登録するフォームの解説です。

オブジェクトの解説

  1. 郵便番号

郵便番号を手入力で行います。テキストボックスの書式プロパティに 000\-0000;;_ を設定します。

住所入力支援機能

Access2000以降、郵便番号を入力することで住所入力を支援する機能が追加されています。これを利用する方法は以下のとおりです。

  1. フォームをデザインビューで開きます。
  2. cbo_住所1コンボボックスをテキストボックス(txt_住所1)に種別変更します。
  3. txt_郵便番号テキストボックスのプロパティを開きます。
  4. [住所入力支援]プロパティの ・・・ をクリックします。

  1. 住所入力支援ウィザードが表示されますので、必要事項を選択します。

  1. [次へ]をクリックします。

  1. テストランを行うことができますので、郵便番号874-0003を入力すると、以下のように都道府県から町名まで表示されます。

  1. [完了]ボタンをクリックします。
     
  2. 都道府県、市名、町名、番地等

住所入力は分割する方法がベターです。都道府県、市町村、町名の少なくとも3分割にしましょう。このようにすることで、都道府県、市町村単位での検索が行い易くなります。

コンボボックスの活用

都道府県名は固定です。総数47ありますね。これを選択する場合、独自の都道府県テーブルを作成し、このフィールドデータをコンボボックスの値集合ソースに指定するようにして下さい。

 

フォーカス取得後イベント

下記のプロシージャを記述します。Dropdownメソッドを用いてフォーカスを取得すると同時にコンボボックスの一覧を表示させます。

Private Sub cbo_住所1_GotFocus()
    Me.ActiveControl.Dropdown
End Sub
  1. Mailアドレス

メールアドレスを入力します。このテキストボックスでは更新前処理イベントで、@(アツトマーク)、.(ドットマーク)の有無をチェックしています。

更新前処理イベントプロシージャ
Private Sub txt_Email_BeforeUpdate(Cancel As Integer)

'メールアドレス形式のチェック

    Const strA = "@"
    Const strB = "."
    Dim strmsg1 As String
    Dim strmsg2 As String
    
    strmsg1 = "メール形式で入力して下さい。@がありません。"
    strmsg2 = "メール形式で入力して下さい。ドット(.)がありません。"
    
    'Instr関数を利用します。
    If InStr(Me.ActiveControl, strA) = 0 Then ' --- A
        MsgBox strmsg1, vbCritical, MyTitle
        Cancel = True ' --- B
        Me.Undo '元に戻します。 ' --- C
    End If
    
    If InStr(Me.ActiveControl, strB) = 0 Then
        MsgBox strmsg2, vbCritical, MyTitle
        Cancel = True
        Me.Undo
    End If

End Sub
解説
  1. InStr関数は、ある文字列の中から指定した文字列 を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。今回の場合は、Me.ActiveControlオブジェクト(txt_Email)の中からstrAのテキスト文字列が存在する場合は先頭からの文字位置を、存在しない場合は0を返します。
    IF関数を用いてInStr関数が返す値が 0 であれば、@が抜けているわけですから警告のメッセージボックスを表示させます。
  2. 更新前処理イベントの引数として Cancel が設定されています。このCancelにTrueを設定することで以降の処理をキャンセルすることができます。
  3. Undoメソッドを用いて、値をリセットします。このメソッドの使用は用途が限定されます。BeforeUpdate イベントやコントロールの Change イベント等で使うことができます。

  1. 電話番号

電話番号を手入力で行います。テキストボックスの書式プロパティに !9999\-9999\-0000 を設定します。

  1. 送信可否

登録後、メール送信が保留、禁止措置がとられた場合、このチェックボックスを False(無効) にします。チェックボックスの既定値はTrue に設定します。

  1. 任意選択欄

フリーに利用できる任意選択欄としてテキストボックスを3個作成しています。これらテクキスボックスのラベル名は環境設定テーブル(tbl_kankyo)フィールドの「選択欄1」、「選択欄2」、「選択欄3」に記述します。

  1. tbl_kankyoテーブルをデザインビューで見た場合

  1. 環境設定フォームで任意な文字列を入力します。

  1. 個人情報登録フォームを開くと、ラベル名が変更されています。

フォームを開く時イベントプロシージャ

この機能をフォームで利用するために、フォームを開く時イベントに以下のようなプロシージャを記述します。

Private Sub Form_Open(Cancel As Integer)

    Me.選択1_ラベル.Caption = DLookup("選択欄1", "tbl_kankyo", "ID=1")
    Me.選択2_ラベル.Caption = DLookup("選択欄2", "tbl_kankyo", "ID=1")
    Me.選択3_ラベル.Caption = DLookup("選択欄3", "tbl_kankyo", "ID=1")

End Sub
解説

Dlookup関数を用いて、tbl_kankyoテーブルの選択欄1〜3のフィールドから値を取得しています。

フォームのエラー時イベントプロシージャの作成

各種のエラー発生時の対応として独自メッセージの表示を考えています。以下のプロシージャを記述します。

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    Dim strmsg1 As String
    Dim strmsg2 As String
    Dim strmsg3 As String
    Dim ctl As Control
    
    Set ctl = Screen.ActiveControl ' --- A
    strmsg1 = "定形入力形式に従っていません。" & Chr(13) & _
               "エラー箇所:「" & ctl.Name & "」"
    strmsg2 = "入力値が正しくありません。" & Chr(13) & _
               "例.数値であるべきところ、文字を入力した…" & Chr(13) & _
               "エラー箇所:「" & ctl.Name & "」"
    strmsg3 = "値を選択して下さい。外部入力は不可です。" & Chr(13) & _
               "エラー箇所:「" & ctl.Name & "」"
    
    If DataErr = 2279 Then
        MsgBox strmsg1, vbCritical, MyTitle
    ElseIf DataErr = 2113 Then
        MsgBox strmsg2, vbCritical, MyTitle
    ElseIf DataErr = 2237 Then
        MsgBox strmsg3, vbCritical, MyTitle
    End If
    
    Screen.ActiveControl.Undo
    Response = acDataErrContinue ' --- B

End Sub
解説
  • エラーコード2279は、定形入力形式に従っていない時に発生するエラーコードです。
  • エラーコード2113は、入力した値のデータ型が正しくない時に発生するエラーコードです。
  • エラーコード2237は、コンボボックスの外部入力が不可である時に発生するエラーコードです。
  1. Screen オブジェクトは、現在フォーカスがある特定のフォーム、レポート、またはコントロールを参照するときに使用します。
    Screen オブジェクトと ActiveForm プロパティを使用すると、フォームの名前を知らなくても、アクティブ ウィンドウのフォームを参照することができます。
  2. 引数 Response に acDataErrContinue を代入すると、既定のエラーメッセージを非表示にできます。
実行結果

cob_性別コンボボックスは外部入力が無効になっていますので、佐藤という文字列を入力すると下記のエラーメッセージが表示されます。

 

ページの先頭へ 前ページへ戻る


個人情報の登録フォームの作成 - 2:Mail管理ソフト14


-Microsoft Access Club-

cPanel と PLESKをインストールした専用・共有レンタルサーバーを銀行振込でご提供中。契約書は一切不要です。
cPanel や PLESKをインストールした専用・共有レンタルサーバー
まずは1ヶ月から...。
日本国内の銀行振込がOK、契約書は不要です。