Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


データの二重入力を防止する : Access裏技Tips



同姓同名の社員持つ会社では、社員データ入力の際、事前にチェックすることが必要です。 ここでは、同姓同名の社員名が入力されるとチェック機能を働かせる技を紹介します。

二重入力の防止

  1. 社員テーブル(tbl_sample)を作成します。
  2. ここには、社員情報として、ID(オートナンバー型)、氏名(テキスト型)、生年月日日(日付/時刻型)フィールドを作成します。
  3. 次に、社員テーブルをもとに帳票式の社員情報入力フォームを作成します。
  4. 氏名を入力するテキストボックス(txt氏名)更新前処理イベントを利用して、既に入力済みの姓名であるか否かをチェックします。
  5. 既に、社員テーブルに入力済みであれば、ユーザーに以降の処理を選択させます。

社員テーブルの作成

社員テーブルを作成します。

  1. 社員テーブルを作成します。
  2. ID(オートナンバー型)、氏名(テキスト型)、生年月日(日付/時刻型)フィールドを作成します。

社員情報入力フォームの作成

社員情報入力フォームを作成します。

  1. 社員テーブルをもとに社員情報入力フォームを作成します。

txt氏名テキストボックスの更新前処理イベントプロシージャ

txt氏名テキストボックスの更新前処理イベントプロシージャを作成します。社員名が入力されると更新前処理イベントを発生させます。

Private Sub txt氏名_BeforeUpdate(Cancel As Integer)

    Dim strmsg As String
    Dim var値 As Variant ' --- A
    
    strmsg = "この氏名の社員は既に入力済みです。このまま入力を続けますか?"
    var値 = DLookup("[氏名]", "tbl_sample", "[氏名] ='" & Me.txt氏名 & "'") '--B
    
    If Not IsNull(var値) Then ' --- C
        Select Case MsgBox(strmsg, 17) ' --- D
            Case 1
                Cancel = False ' ---E
            Case Else
                Cancel = True ' --- F
                Me.Undo ' --- G
        End Select
    Else
        Cancel = False
    End If

End Sub
解説
  1. 変数var値をバリアント型の変数と宣言します。
  2. DlookUp関数の戻り値を変数var値に代入します。
  3. IsNull関数を用いて、変数var値が空白でなければ、以下の処理に進みます。
  4. Msgbox関数でユーザーが処理を選択できます。
  5. 引数CancelにFalse値を代入すると、プロシージャを継続することになります。
  6. 引数CancelにTrue値を代入するとプロシージャを中止します。
  7. Undoメソッドで、取り消します。
今回のおすすめポイント

DLookup関数

指定されたレコードの定義域に含まれるフィールドの値を返します。
ここでは、同姓同名の社員名が既にテーブルに入力済みであるか否かを問い合わせています。
既に入力されているとDlookUp関数はその社員名を戻り値として返します。また、入力されていなければNull値を返します。

動作確認

  1. デザインビューからフォームビューに切り替え、データ入力を行います。

  1. 既に入力済みの社員名を入力します。
  2. メッセージが表示されます。

  1. [OK]ボタンをクリックします。
  2. 引き続き入力が可能になります。
今回のおすすめポイント

テーブルフィールドプロパティのインデックス

テーブルフィールドプロパティにあるインデックスに「あり(重複なし)」を設定すると二重入力を防ぐことができます。
しかし、この場合であると、同姓同名の社員であっても入力ができない事態になってしまいます。

関連ページ

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

 


データの二重入力を防止する : Access裏技Tips


 

-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。