问题标签 [ms-access-reports]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ms-access - 从批处理文件或任务计划程序将报告输出到 PDF 时出现“无当前记录”错误
问题
我正在使用计划任务打开 MS Access 数据库,运行宏以通过电子邮件发送 PDF 格式的报告,然后关闭数据库。该报告是相对基本的,宏仅使用该EmailDatabaseObject
操作以 PDF 格式导出和通过电子邮件发送报告。
在过去的 4 年中,它每天都在运行与 Windows 7 兼容的最新版 Office 365 的 Windows 7 机器上成功运行。
我最近将机器更新到 Windows 10,现在No Current Record
在运行计划任务时遇到错误。OK
多次单击错误后,Windows 报告 MS Access 已停止工作并且应用程序崩溃。
如果我手动打开数据库并手动运行宏,一切都会成功。
设置
- Windows 10 专业版 20H2 (19042.964) 64 位
- Office 365 商业应用程序 2104 (13929.20296) 32 位
我的研究
我发现这篇 MS 知识库文章描述了这个问题,但是,据报道这适用于 MS Access 2003 和 2007。我的报告没有分组,但在报告页脚中包含汇总。但是,建议的解决方案是不可行的,因为删除总和会从报告中删除必要的信息。
我发现了这个相关的问题,但是,这归因于从 OneDrive 访问数据库而不是映射的网络驱动器,而我是从映射的网络驱动器访问数据库。
这看起来是同一个问题,但我无法访问专家交流的“解决方案”......
我已经尝试过的
将 Office 365 回滚到早期版本(版本 2101)。
以最高权限运行计划任务 - 但这会导致无法访问映射的网络驱动器。
从批处理文件运行宏。
从另一台 PC 打开数据库并从批处理文件运行宏。
使用 AutoExec 宏执行操作,而不是按名称调用特定宏。
将数据库中的所有对象导入新的本地数据库。
使用操作在本地将报告导出为 PDF
ExportWithFormatting
。使用该
DoCmd.SendObject
方法通过电子邮件发送报告 - 这会导致 MS Access 立即崩溃。将默认 Windows 打印机和默认报告打印机更改为“Microsoft Print to PDF”以排除可能的打印机驱动程序问题。
当前的解决方法
我发现只有在导出格式设置为 PDF 时才会出现此错误;因此,我目前的解决方法是将报告导出为 RTF 格式——但这显然并不理想。
更新
我现在已经系统地从报告中删除了项目,直到我能够从计划任务中成功运行报告。
我删除了项目,直到在报告标题中留下一个静态标签,在报告详细信息中留下一组字段,这些字段引用数据库中单个表中的基本数字和文本数据。
删除报表页眉和页脚导致报表从计划任务成功运行,因此我确定该问题一定是由与报表页眉/页脚关联的设置引起的。
我将问题隔离到报告标题中的“强制新页面”设置:
将此设置为'After Section',报告崩溃;但如果设置为'None',则报告成功。
但是,当在原始报告中将此设置为“无”时,报告在从任务计划程序运行并输出到 PDF 时仍然崩溃。
重现问题的步骤
我在这里上传了一个非常基本的数据库,其中包含一个表、一个报表和一个宏,该宏执行 ExportWithFormatting 操作,然后执行 QuitAccess 操作。
要重现此问题,请打开命令提示符窗口并发出以下命令:
然后 MS Access 应该会打开,您可能会看到“无当前记录”错误。
有没有其他人遇到过这个问题并知道解决方案?
非常感谢您的时间。
vba - 如何在访问报告中生成列表?
我正在尝试在 Microsoft Access 中生成一个报告,该报告应根据存储在名为 Checkup 的表中名为 Exams 的字段中的内容创建一个列表。
到目前为止,我有一个带有计算字段的报告和一个带有记录源考试的文本框。计算字段使用 Switch 函数生成列表;这是代码:
代码运行良好,但是,我需要向 Switch 函数添加更多值,但我收到错误消息“文本太长,无法编辑”。由于这个字段是计算出来的,我不能只是去表格并添加更多字符或使其成为备忘录类型字段(或者我至少我不知道如何)。
这个问题有解决方法吗?我还尝试将代码放在报告中的 onLoad(或 OnOpen)事件中,但没有让它工作。访问给我编译错误:预期:列表分隔符或)
这是代码:
任何帮助是极大的赞赏!
vba - MS Access 报告中的动态图像问题
我有一份报告,用于在 A4 纸上打印 3 x 6 的网格上的标签。这些是剥离标签,可以根据需要打印整张或仅一张。
报表的记录源是一个查询,它始终包含 18 条记录(以覆盖 3x6 网格)和 3 列:[ID] (1-18)、[LabelText] 和 [Path]。在这 18 条记录中,有时所有 18 条 LabelText 和 Path 都已填充,但有时只有前几条(其余为空""),但也可能是前 4 条为空,然后 6 条有数据,其余 8 条是空的。ID 始终填充数字 1 到 18。这样做是为了不浪费 A4 上的标签。
每个打印的标签都应包含基于 [路径] 列中给出的文件路径的不同图像。这是通过 Detail On Format 事件实现的
所有工作都有问题。
- 如果所有 18 个标签都填满了,那么一切都是正确的
- 如果说前 3 条记录已填充,则前 3 个标签获得正确的图像,但其余 15 个标签也获得最后一张图像(来自标签 3)
- 如果说前 3 条记录是空的,接下来的 3 条记录有数据,其余的是空的,那么前 3 个标签没有图像(应该是)标签 4-6 有正确的图像,其余的再次获得最后一个图像(来自标签 6)
我在 On Format 事件中尝试了许多不同的“If/Else”选项,但总是得到相同的结果。必须有一个简单的解决方案,但我没有看到它。