3

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

有谁知道如何通过 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

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

4

3 回答 3

3

在您的Edit_Click()过程中,您EntityNameWhereCondition参数作为OpenForm.

  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

于 2012-07-04T07:13:18.410 回答
1

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

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

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

于 2012-07-03T05:25:42.097 回答
1

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

于 2012-07-03T08:56:39.117 回答