我有一份报告,其中包含有关工作/任务的详细信息,还有一份表格,可以将大部分数据用于该报告。鉴于报告是查看数据大图的好方法,而表单是编辑数据的最佳方式,我希望能够点击一行,并让它打开相关记录。表单视图。
有没有人知道如何通过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
它成功打开了正确的表单,它还获取了正确的实体名称,但它没有正确过滤。我看不出代码的问题。
答案 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