Access 2010中的VBA语法:如何使用复合主键

时间:2015-05-18 07:07:12

标签: vba syntax ms-access-2010 where-clause

编辑了以下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)并允许编辑该观察记录。

感谢您查看此内容。

1 个答案:

答案 0 :(得分:2)

除非示例中的代码不正确,否则您当前正在使用VBA'和'命令,而不是发送SQL'和'作为Where字符串的一部分。

只需按照以下方式更改代码,以确保代码位于引号内,即可使其正常工作。

DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' and TrappingDate = #" & ObsDate & "#", acFormEdit