Search

  毎日にもっと楽~を! BLOG Tokyo

2008年1月 9日

【Access】Dlookup関数

フォームに入力中のテーブルにない情報を参照したい場合がある。たとえば、重複データの確認とか、顧客の詳細情報とか。今回は、重複入力の確認をDlookup関数を用いる方法を紹介するが、このDlookup関数の動作が遅く、VBAの作業中、突然フリーズしたりする。なかなか問題のある関数だが、非常に有用だ。

DLookup 関数を使うと、基になるレコード ソースにないフィールドの値をフォームやレポートに表示することができます。たとえば、演算コントロールで DLookup 関数を使って、[商品] テーブルにある [商品名] フィールドを、[受注明細] テーブルを基にするフォームに表示することができます。

DLookup(抽出フィールド, テーブル/クエリ名, 条件)

もっと詳しく


'個人番号は、キーになっていて重複しない番号なので、チェックをいれる
KNumCheck = DLookup("個人番号", "謝金登録フォーム用債主マスタークエリー", "[個人番号] = '" & 個人番号.Value & "'")
If IsNull(KNumCheck) = False Then '同じ番号があった
KName = DLookup("氏名", "謝金登録フォーム用債主マスタークエリー", "[個人番号] = '" & 個人番号.Value & "'")
SenkouName = DLookup("所属名", "謝金登録フォーム用債主マスタークエリー", "[個人番号] = '" & 個人番号.Value & "'")
mes = "すでにこの個人番号は、下記の方が使用しています。" & vbCrLf & "氏名 " & KName & " 所属名 " & shozokuName
kotae = MsgBox(mes, vbCritical, "Error")
個人番号.SetFocus
Exit Sub
End If

Dlookup関数を使わなくても似たようなことが出来ます。
むかしのエントリーで紹介済み

Private Sub 個人番号_AfterUpdate()

Dim IDnum As String
Dim strSQL As String
Dim Rst As DAO.Recordset


IDnum = Me.個人番号

'IDnumがテキストなので'(シングルクオテーション)で括る必要がある。strSQL = "select * from 債主マスター where 個人番号='" & IDnum & "'"

Set Rst = CurrentDb.OpenRecordset(strSQL)

If Rst.RecordCount > 0 Then

If IDnum = Rst!個人番号 Then
MsgBox "この番号は、既に入力済みですが、間違いないですか?" & vbCrLf & "氏名:" & Rst!氏名 & " 個人番号:" & Rst!個人番号 & " 入力:" & IDnum
End If

Set Rst = Nothing

Exit Sub
End If

Rst.Close
Set Rst = Nothing

End Sub



Bookmark and Share


編集長のおすすめの一冊!2010

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form