经过数小时的研究,我仍然无法理解我的语法有什么问题。
rs.FindFirst "[Date] =" & Date() & " AND [Employee] = " & [Forms]![Machinist Timesheet]![Frame4]
它只是给我一个运行时错误的语法。
许多解决方案涉及大量定界撇号或引号,但我不明白为什么它们是必要的。
答案 0 :(得分:2)
FindFirst 方法实质上是在没有“WHERE”的情况下要求SQL查询的“WHERE”部分。
数据库中的字段是某些数据类型,必须在SQL中表示。
尝试编写如下代码:
rs.FindFirst "[Date] = #" & Format(Date(), "m/d/yyyy") & "# AND [Employee] = " _
& [Forms]![Machinist Timesheet]![Frame4]
这将使用标准SQL片段,如下所示:
[Date] = #7/31/2015# AND [Employee] = 5
如果Employee字段不是数字,则应该有引号,如下所示:
rs.FindFirst "[Date] = #" & Format(Date(), "m/d/yyyy") & "# AND [Employee] = '" _
& [Forms]![Machinist Timesheet]![Frame4] & "'"
对于标准SQL片段:
[Date] = #7/31/2015# AND [Employee] = '698-48-1247'
您可能希望像这样编写例程,然后检查sCriteria的值,以便正确格式化。如果您不确定格式是否正确,请将其复制并在“WHERE”之后将其粘贴到SQL视图中的查询中
Dim sCriteria As String
sCriteria = "[Date] = #" & Format(Date(), "m/d/yyyy") & "# AND [Employee] = " & _
[Forms]![Machinist Timesheet]![Frame4]
Debug.Print sCriteria
rs.FindFirst sCriteria
<强>参考强>