【问题标题】:VBA syntax in Access 2010: How to open form to specific record with composite primary keyAccess 2010 中的 VBA 语法:如何使用复合主键打开特定记录的表单
【发布时间】:2015-05-18 07:07:11
【问题描述】:

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

感谢您查看此内容。

【问题讨论】:

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


    【解决方案1】:

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

    只需按如下方式更改您的代码,以确保引号内的 and 应该可以正常工作。

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

    【讨论】:

    • 感谢您的回答。使 SQL Where 字符串的 AND 部分确实可以编译,因此您对此是正确的,但是它无法完成这项工作。表单在空记录处打开。当我修改我的代码以通过两个表达式中的任何一个进行过滤时,它可以工作并且我在我的表单中获得了正确的记录子集,但是一旦我尝试将两个表达式与 AND 组合它就会出现空而不是一个记录那匹配。似乎用于过滤复合标准的 VBA 代码并不像人们希望的那样简单。
    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多