【问题标题】:send debug.print to different Immediate window将 debug.print 发送到不同的立即窗口
【发布时间】:2017-08-24 23:33:39
【问题描述】:

我在 Access 中设置了一个多线程例程,它同时打开多个 Access 文件并在每个文件中执行特定的功能。这些文件并行执行。我想将Debug.Print 消息发送到启动多线程的主文件。

我不确定它是否可以做到这一点,或者是否有更好的解决方案。

【问题讨论】:

标签: vba debugging ms-access immediate-window


【解决方案1】:

您有许多进程,每个进程都在更大的图景中各自工作。

“主”IDE的即时窗格属于那个实例,在那个进程中;您可以 Alt+Tab 然后 Alt+F11 在任何/每个实例中启动一个 VBE 实例查看该实例的 Debug.Print 输出。

您想要的是类似于ILogger 实现,它将日志条目写入专用数据库表:例如DatabaseLogger

您将 Debug.Print 替换为 Logger.Log 调用;这样,您就可以让数据库服务器处理多个传入线程,并且根据 RDBMS,您甚至可以设置一个作业来清理、聚合和/或存档旧的日志记录。或者其他什么,只要它不是我需要在 VBA 代码中关心的逻辑。

写入另一个 VBE 的 立即 工具窗口涉及 低级、跨进程 Win32 向导漂亮整洁的 VBA 项目。我不会为此烦恼,有更简单的解决方案。

【讨论】:

  • 嗨,马特,记录是我一直在考虑的事情。我将检查代码,看看它是否适合。非常感谢。
  • 嗨,垫子,这些链接太棒了。我正在查看您创建的字典,然后查看更新的字典。 {Private Type tDictionary Encapsulated As List } 中有一个引用。这也应该是“TYPE TypeValidator”还是另一个类。
【解决方案2】:

您可以在主应用程序中创建一个 PublicNotCreatable UserForm(不是访问表单),并将对它的引用传递给所有并行应用程序。向 UserForm 添加自定义方法,例如 'PrintLine(message as string), and each app can callform.PrintLine("app is running")`?

然后您可以让 UserForm 显示输出,或者可能让 UserForm 将消息输出到主应用程序的即时窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2020-03-17
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多