【问题标题】:How to communicate between two instances of open MDB with same form?如何在两个具有相同形式的开放 MDB 实例之间进行通信?
【发布时间】:2009-12-15 14:53:48
【问题描述】:

在 VBA (Access 2000) 中是否可以在两个打开的数据库实例之间向表单发送信息?

例如:

用户 1 在他的 PC 上打开了一个 DB.MDB 实例,并打开了 FormOne。用户 2 在她的 PC 上打开了另一个 DB.MDB 实例,并打开了 FormOne。

用户 1 能否操作用户 2 的 FormOne 实例上的文本框内容(即发送类似于聊天客户端的消息)?

【问题讨论】:

  • 为什么?为什么不只使用公司电子邮件?
  • 第二个托尼,你为什么认为你需要这样做?你想完成什么?

标签: ms-access forms vba


【解决方案1】:

您可以将数据存储到表中并在计时器上更新表单或子表单。

【讨论】:

  • 我想到了这个解决方案,但我想知道是否还有另一种不涉及不断查询表的方法。
【解决方案2】:

像 Remou 一样,我认为 table 方法是你将要得到的。您可以通过维护具有上次更新值的单记录表来优化查询。然后让您的计时器表单检查自上次触发计时器以来该值是否已更改,这将告诉计时器检查聊天表。

或者,您可以在读取记录后立即删除记录以保持表格较小。

你会发现所有的记录创建/删除都会使你的数据库膨胀,所以一定要定期压缩它。

最后,如果所有用户都可以访问共享驱动器,您可以将消息存储在文本文件而不是表格中。

另一个问题当然是窃听(使用表格或文件)。您可以通过以下方式将其最小化: 在写入之前对文本进行混淆/加密,并在阅读时对其进行去混淆。目标读取记录后立即删除记录。 隐藏文件/表格。对于文件使用:SetAttr myFile、vbSystem 或 vbHidden 对于表格,在表格名称前加上 USys_ 前缀并隐藏表格。

话虽如此,它仍然是聊天客户端的遗憾替代品。它会减慢数据库的速度,并可能减慢共享驱动器的速度。我会认真思考为什么我需要这个,以及它是否真的是最好的方法。

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 2011-08-05
    • 2011-04-13
    • 2016-03-15
    • 2020-08-30
    • 2019-11-24
    • 2019-09-18
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多