【问题标题】:Multiple condition in FindFirst satementFindFirst 语句中的多个条件
【发布时间】:2025-12-16 12:25:05
【问题描述】:
Sub Main()
StartTime = Now()
TDate = CDate(Format(Now(), "MM/DD/YYYY"))
My = Environ("Username")
Set db = CurrentDb
Set rs = db.OpenRecordset("Emp", dbOpenDynaset)
Criteria = "ID = '" & My & "' And From_Date >= '" & TDate & "' And To_Date <= '" & StartTime & "' "
rs.FindFirst Criteria
If rs.NoMatch Then
MsgBox "Record not found"
else
MsgBox "Record found"
end if

请帮助运行此代码,因为我想查找开始日期和结束日期之间的第一条记录。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    对于日期,您应该使用“#”作为封闭字符:

    Criteria = "ID = '" & My & "' And From_Date >= #" & TDate & "# And To_Date <= #" & StartTime & "# "
    

    【讨论】:

      【解决方案2】:

      您混淆了日期和时间格式:

      Sub Main()
      
          ' Dim StartTime As Date
          ' Dim TDate As Date
      
          StartTime = Now
          TDate = DateValue(StartTime)
          My = Environ("Username")
      
          Set db = CurrentDb
          Set rs = db.OpenRecordset("Emp", dbOpenDynaset)
          Criteria = "ID = '" & My & "' And From_Date >= #" & Format(TDate, "yyyy\/mm\/dd") & "# And To_Date <= #" & Format(StartTime, "yyyy\/mm\/dd") & "#'"
          rs.FindFirst Criteria
          If rs.NoMatch Then
              MsgBox "Record not found"
          Else
              MsgBox "Record found"
          End If
      
      End Sub
      

      但是,它可以简化为:

      Sub Main()
      
          My = Environ("Username")
      
          Set db = CurrentDb
          Set rs = db.OpenRecordset("Emp", dbOpenDynaset)
          Criteria = "ID = '" & My & "' And From_Date >= Date() And To_Date <= Now()"
          rs.FindFirst Criteria
          If rs.NoMatch Then
              MsgBox "Record not found"
          Else
              MsgBox "Record found"
          End If
      
      End Sub
      

      【讨论】: