是否可以单击报表记录以使用VBA在Access中打开相关表单

时间:2012-07-03 05:12:35

标签: ms-access vba ms-access-2007 access-vba

我有一份报告,其中包含有关工作/任务的详细信息,还有一份表格,可以将大部分数据用于该报告。鉴于报告是查看数据大图的好方法,而表单是编辑数据的最佳方式,我希望能够点击一行,并让它打开相关记录。表单视图。

有没有人知道如何通过VBA这样做?在我看来,虽然我对Access中对象的了解有限,但应该是可能的。

更新

我为我的报告实现了以下代码:

Private Sub Edit_Click()

  Dim EntityName As String
  Dim DocName As String

  DocName = "Entity: Overview"

  strWhere = "[Entity Name]='" & Entity & "'"
  DoCmd.OpenForm DocName, acNormal, , EntityName

End Sub

它成功打开了正确的表单,它还获取了正确的实体名称,但它没有正确过滤。我看不出代码的问题。

3 个答案:

答案 0 :(得分:3)

Edit_Click()程序中,您EntityName作为OpenForm WhereCondition 参数。

  DoCmd.OpenForm DocName, acNormal, , EntityName

但是,您尚未为EntityName分配任何内容,因此它是一个空字符串。我认为你应该使用strWhere作为 WhereCondition

Private Sub Edit_Click()
  Dim strWhere As String
  Dim DocName As String

  DocName = "Entity: Overview"
  strWhere = "[Entity Name]='" & Me.Entity & "'"
  DoCmd.OpenForm DocName, acNormal, , strWhere
End Sub

我认为Entity是控件的名称,而这正是您获得构建strWhere的值的地方。如果报告中没有Entity名称的控制权,那么即使原始查询中有Entity,代码也无效。

答案 1 :(得分:1)

您应该能够在报告的 Detail 部分添加 On Click 事件,然后在VBA处理程序中添加类似的内容:

DoCmd.OpenForm "MyForm", acNormal, "", "ID=" & ID.Text

(其中 MyForm 是目标表单, ID 是报表中隐藏或可见的控件,用于标识当前记录)。

答案 2 :(得分:1)

您说报告,但您不应使用报告,而应使用连续表格或数据表。然后,您可以向任意行的任何控件添加事件,并添加双击事件,如果您不想让用户疯狂。如果您的用户更清楚,也可以添加命令按钮,或者将“链接”文本框格式化为下划线。由@dbaseman显示的操作打开的记录将打开哪个偶数记录具有焦点(当前记录)。这将导致你发现你能用连续形式做什么和不做什么:D