编辑了以下andshrew的回答
我只是在VBA脚本中找到了自己的脚,并且对这段相当简单的代码感到有点难过。我怀疑是因为我没有得到Where语句的语法。下面的代码应该打开一个匹配两个过滤器表达式的记录的表单,而是打开一个空白记录。如果我只使用一个过滤器表达式,它可以根据需要工作,并将表单打开到正确的记录子集。从我在其他地方找到的,应该可以将多个过滤条件与AND组合,所以我不知道为什么这不起作用。
请参阅下面的代码,以便更详细地描述我正在尝试做的事情,以防万一这不是一个简单的语法问题。
Private Sub lsPrevObs_DblClick(Cancel As Integer)
Dim Microchip As String
Dim ObsDate As Date
Microchip = Me.Text24
ObsDate = Me.lsPrevObs
DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' AND TrappingDate = #" & ObsDate & "#", acFormEdit
End Sub
此子句的上下文:
我有一个表格,其中包含有关个体动物的基本信息及其微芯片编号(尽管它的名称包含字母,因此是一个字符串,而不是整数)作为主键。然后我有一个观察表,它使用Microchip编号和观察日期作为复合主键。 我有一个链接到第一个表的表单。文本框(Text24)显示当前记录的微芯片编号,列表框(lsPrevObs)显示观察表中已有记录的动物的观察日期。我想将一些VBA代码绑定到列表框的双击事件,以便当用户双击日期时,将打开一个新表单(frmObservationsEdit,DataEntry = No)并允许编辑该观察记录。
感谢您查看此内容。
答案 0 :(得分:2)
除非示例中的代码不正确,否则您当前正在使用VBA'和'命令,而不是发送SQL'和'作为Where字符串的一部分。
只需按照以下方式更改代码,以确保代码位于引号内,即可使其正常工作。
DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' and TrappingDate = #" & ObsDate & "#", acFormEdit