Microsoft Access 如何检索当前表单 ID 以进行打印

Posted

技术标签:

【中文标题】Microsoft Access 如何检索当前表单 ID 以进行打印【英文标题】:Microsoft Access How to retrieve current form ID to print 【发布时间】:2014-09-24 13:50:23 【问题描述】:

我正在尝试打印名为 Carton Labels 的报告,并且我想打印用户刚刚创建的特定记录。每次我尝试使用 Me.cartonNo 时,这是用户当前表单上的实际字段。系统提示他输入。我做错了什么?

编辑:

Dim strDocName As String
Dim strFilter As String

DoCmd.RunCommand acCmdSaveRecord

strDocName = "Carton Labels"
strFilter = "[cartonNo] = Forms![frm_addFinishedGoodsInventory]![cartonNo]"

DoCmd.OpenReport strDocName, acViewPreview, strFilter

我的打印按钮不起作用,它的作用就像 strFilter 中没有存储任何内容,但是如果我将 Dim intFilter 创建为 Integer 并将其存储为整数,如果设置断点,我可以清楚地看到 cartonNo,但我不在 strFilter 中。

【问题讨论】:

我会避免使用宏,除非您需要在线工作。它们很难控制。 @Fionnuala 我添加了我的新 VBA 代码,因为您建议远离宏 【参考方案1】:

您需要先解析纸箱编号,然后再将其传递给 OpenReport。通过放置表格!像这样在引号外引用:

strFilter = "[cartonNo] = " & Forms![frm_addFinishedGoodsInventory]![cartonNo]

您正在创建字符串[cartonNo] = 6,然后将其传递给报告。如果该字段是文本字段(或日期),则需要在值周围加上引号(或 #s)。

【讨论】:

strFilter 完美运行,我可以看到实际数字被存储到其中。但我的过滤器没有应用到我的 OpenReport。 您确定驱动报告的表或查询有一个名为 cartonNo? 的字段不是报告本身,而是报告的数据源。并且字段 cartonNo 需要一个数字而不是文本? @JohnnyBones 我的 cartonNo 字段需要的是字符串而不是数字。 @JohnnyBones 我也尝试将整个 strFilter = 包裹在引号“”中。 确保在运行 DoCmd.OpenReport 之前报告已关闭。如果它已经打开,则不会应用过滤器。这经常发生在开发中,当您同时使用报表和打开它的代码时。您可以添加If Application.CurrentProject.AllReports(strDocName).IsLoaded = True Then DoCmd.Close acReport, strDocName, docmd.Close acReport,,acSavePrompt

以上是关于Microsoft Access 如何检索当前表单 ID 以进行打印的主要内容,如果未能解决你的问题,请参考以下文章

在 Microsoft Access 2013 中,如何访问当前 ODBC 连接的用户名?

无法检索 Microsoft Access 自动编号值

如何使用 Microsoft Access 导航表单过滤加载

在 microsoft access 2010 表单和报告中显示多个附件

Microsoft Access - 导航表单导致我的查询不起作用

如何根据 Microsoft Access 中的组合框选择导航到表单