DLookUp 到 return 所有出现而不是只有第一个

DLookUp to return all occurrences instead of only the first one

我检查用户选择的日期是否匹配字段的 tblFestivity Festivity_Date。
如果这些匹配,我会显示一个消息框。

用户输入日期的字段:

table tblFestivity 和字段 Festivity_Date:

它适用于第一条记录:

Private Sub Date_Flow_Exit(Cancel As Integer)
If Date_Flow = DLookup("[Festivity_Date]", "tblFestivity", "[Date_Flow]=Form![Date_Flow]") Then
    MsgBox "è un giorno festivo"
End If 
End Sub

此代码显示消息框,但仅针对第一条记录,它不会检查 table tblFestivity 中的其他记录。

Date_Flow是第一张图片中文本框的名称。

我怎样才能检查所有的事件而不是只检查第一个?

找不到匹配项,因为 WHERE CONDITION 语法错误且未在条件中使用字段名称。引用字段或表单控件的正确语法是 Forms!formname!fieldORcontrol name。条件应使用与表单上的值匹配的字段名称。

If Not IsNull(DLookup("[Festivity_Date]", "tblFestivity", "[Festivity_Date] = Forms!formname!Date_Flow")) Then

或者

If DCount("*", "tblFestivity", "[Festivity_Date]=Forms!formname!Date_Flow") > 0 Then

如果我没理解错的话,你想在每次出现用户输入的日期时显示一条消息吗?

如果是这样,那么我建议您打开包含结果的记录集并遍历每个结果并显示消息。

Private Sub Date_Flow_Exit(Cancel As Integer)
Dim rs As Recordset
Dim dt As Date
dt = Me.Date_Flow
Set rs = CurrentDb.OpenRecordset("SELECT tblFestivity.Festivity_Date FROM tblFestivity WHERE (((tblFestivity.Festivity_Date) =#" & dt & "#));") 'Opens recordset only with dates entered in textbox

With rs
    If .RecordCount > 0 Then
        .MoveFirst
        Do While Not .EOF
            MsgBox ("è un giorno festivo")
            .MoveNext
        Loop
    Else
        MsgBox ("There are no festivities on this day")
    End If
End With
End Sub

让我知道这就是你想要的?