我有一个带有组合框的表单,显示我的所有报告。我的一些报告有一个查找表单,需要填写以获取正确的数据。例如,我打开一个表单,然后选择一年,然后该报告将在那一年打开。
组合框中的值来自一个表,该表具有报告名称以及用于显示表单或报告的内容 - 一些是OpenForm,另一些是OpenReport。我把整个命令放在这个字段中 - DoCmd.Open(报告或表格)。我怎么能让它运行?
到目前为止,我的代码是???通过我没有得到的:
If Not IsNull(ComboReports) And ComboReports <> "" Then
Dim rep As Variant
rep = DLookup("[ReportOpenCommand]", "tblCodesReports", "ReportAccessName = " & Me.ComboReports)
DoCmd.???? rep
Else
MsgBox ("You Must First Select a Report To Print!")
ComboReports.SetFocus
End If
提前致谢!
答案 0 :(得分:0)
通过将整个命令存储在字段中,您无法使其运行。你必须存储参数。
解决方案A:使用字段
为ObjectName,ObjectType和FriendlyTitle创建字段。使用这些选择并运行报告。这些可以直接加载到组合框中以便于使用:
<强> tblCodesReports:强>
+------------+------------+------------+---------------+
| ReportId | ObjectName | ObjectType | FriendlyTitle |
+------------+------------+------------+---------------+
| AutoNumber | Text | Long | Text |
+------------+------------+------------+---------------+
<强>组合框:强>
<强>代码强>
Dim sName As String
Dim eType As Access.AcObjectType
With ComboReports
sName = .Column(2, .ListIndex)
eType = .Column(3, .ListIndex)
Select Case eType
Case acForm
DoCmd.OpenForm sName
Case acReport
DoCmd.OpenReport sName
End If
End With
解决方案B:使用Report.Open