代码之家  ›  专栏  ›  技术社区  ›  Lee Mac

从批处理文件或任务计划程序将报告输出为PDF时出现“无当前记录”错误

  •  0
  • Lee Mac  · 技术社区  · 5 年前

    问题

    我正在使用计划任务打开MS Access数据库,运行宏以PDF格式通过电子邮件发送报告,然后关闭数据库。报告是相对基本的,宏只是使用 EmailDatabaseObject 出口及;用电子邮件发送PDF格式的报告。

    在过去4年中,它每天都在运行与Windows 7兼容的最新版本Office 365的Windows 7计算机上成功运行。

    我最近将机器升级到Windows 10,现在遇到了一个问题 No Current Record 运行计划任务时出错。点击后 OK Windows多次报告MS Access已停止工作,应用程序崩溃。

    如果我手动打开数据库并手动运行宏,一切都会成功。

    安装程序

    • Windows 10 Pro 20H2(19042.964)64位
    • Office 365商务应用2104(13929.20296)32位

    我的研究

    • 我找到了 this MS KB article 然而,在描述这个问题时,据报道这适用于MS Access 2003&2007.我的报告没有分组,但在报告页脚中包含汇总。然而,建议的解决方案不可行,因为删除汇总将从报告中删除必要的信息。

    • 我找到了 this related question 然而,这将原因归因于从OneDrive访问数据库,而不是从映射的网络驱动器,而我是从映射的网络驱动器访问数据库。

    • This 看起来是同一个问题,但我无法访问专家交换的“解决方案”。。。

    我已经试过了

    • 正在将Office 365回滚到早期版本(版本2101)。

    • 以最高权限运行计划任务,但这会导致无法访问映射的网络驱动器。

    • 从批处理文件运行宏。

    • 从另一台PC打开数据库,并从批处理文件运行宏。

    • 使用AutoExec宏执行操作,而不是按名称调用特定宏。

    • 将数据库中的所有对象导入新的本地数据库。

    • 使用 ExportWithFormatting 行动

    • 使用 DoCmd.SendObject 方法通过电子邮件发送报告-这会导致MS Access立即崩溃。

    • 更改默认Windows打印机&默认报表打印机为“Microsoft Print to PDF”,以排除可能的打印机驱动程序问题。

    当前的解决方法

    我发现这个错误只有在导出格式设置为PDF时才会出现;因此,我目前的解决方法是将报告导出为RTF格式——但这显然并不理想。


    使现代化

    现在,我已经系统地从报告中删除了项目,直到我能够从计划的任务中成功运行报告。

    我删除了项目,直到在报告标题中留下一个静态标签,在报告详细信息中有一组字段引用基本数字&数据库中单个表中的文本数据。

    删除报告标题&Footer导致报表从计划任务成功运行,因此我确定问题一定是由与报表页眉/页脚关联的设置引起的。

    我把这个问题孤立起来 “强制新页面” 在报告标题中设置:

    enter image description here

    设置为 “节后” ,报告崩溃;但如果这个设定为 “没有” ,报告是成功的。

    但是,当设置为 “没有” 在原始报告中,当从任务调度器运行并输出到PDF时,报告仍会崩溃。

    重现问题的步骤

    我上传了一个非常基本的数据库 here ,包含一个表、一个报表和一个宏,该宏执行ExportWithFormatting操作,然后执行QuitAccess操作。

    要重现该问题,请打开命令提示窗口并发出以下命令:

    cd C:\Program Files (x86)\Microsoft Office\root\Office16
    msaccess.exe C:\YourPath\test.accdb /x macro1
    

    然后,MS Access将打开,您可能会看到 “没有当前记录” 错误


    还有谁遇到过这个问题并知道解决方案吗?

    非常感谢您抽出时间。

    0 回复  |  直到 5 年前
    推荐文章