Access には、テーブルに格納されている 1 つの情報を検索するためのドメイン関数と呼ばれる一連の関数があります。最も一般的なものには、DCount()、DLookup()、DSum()、DAvg()、DMax()、および DMin() があります。
これには DLookup 関数を使用する必要があります。基本的に、値を検索するにはフィールド名とテーブル名が必要です。また、多くの場合、条件ステートメント (または WHERE 句) を 3 番目の引数として含めて、DLookup 関数が実際に正しい行から値を取得していることを確認します。条件ステートメントを渡さない場合、ドメイン関数は単純に最初の一致を返します。
If Date() <= DLookup("SomeDateField", "tblYourTableName") Then
MsgBox "The date in stored in the table is today or else is in the future."
Else
MsgBox "The date stored in the table is in the past."
End If
これを書く別の方法を次に示します。
If Date() < DLookup("SomeDateField", "tblYourTableName") Then
MsgBox "The date in stored in the table is in the future."
Else
MsgBox "The date stored in the table is today or is in the past."
End If
テーブルに複数のレコード/行がある場合は、次のようにします。次に、必要な行から必要な値を取得するように絞り込むために、何らかの条件ステートメントが必要です。
If Date() < DLookup("SomeDateField", "tblYourTableName", "UserID = 1") Then
MsgBox "The date in stored in the table is in the future."
Else
MsgBox "The date stored in the table is today or is in the past."
End If
実際にあなたが求めていることではありませんが、この関数 (および他のドメイン関数) で舞台裏で実際に何が起こっているのかを理解することが重要だと思います。基本的に、SQL の WHERE 句と呼ばれる基準ステートメントを使用して値を取得するレコード/行を指定するオプションを使用して、1 つのテーブルから 1 つの値を取得することを選択します。それでは、このような関数を作成する方法と、Microsoft がおそらくどのように DLookup 関数を作成したかを見てみましょう。
Public Function MyLookup(ByVal strField As String, _
ByVal strTable As String, _
Optional ByVal strCriteria As String) As Variant
'Error handling intentionally omitted
'Proper error handling is very critical in
'production code in a function such as this
If strField <> "" And strTable <> "" Then
Dim sSQL as string
sSQL = "SELECT TOP 1 " & strField & " FROM " & strTable
If strCriteria <> "" Then
sSQL = sSQL & " WHERE " & strCriteria
End If
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot)
If Not (rst.EOF and rst.BOF) Then
MyLookup = rst(strField).Value
End If
rst.Close
Set rst = Nothing
End If
End Function
次に、連絡先テーブルで誰かの生年月日を見つけたいとしましょう。
Dim dteBirthDate as Date
dteBirthDate = MyLookup("BirthDate", "tblContacts", "ContactID = " & 12345)
DLookup 関数を持っていない場合 (または独自に作成していない場合) は、上記の「MyLookup」関数にすべてのコードを記述して、テーブル。