【问题标题】:MS Access form does not refresh when using ODBC link to MySql使用 ODBC 链接到 MySql 时,MS Access 表单不刷新
【发布时间】:2012-01-23 14:17:11
【问题描述】:

我有一个使用 MySQL ODBC 连接器连接到 MySql 表的前端 Access 2007 数据库。

问题在于,如果数据被网络上的其他用户更改或数据被弹出表单更改,则链接到表的表单将不会刷新其数据。

如果我创建一个检测更改的 VBA 代码,然后刷新表单或重新查询,那么以表格格式显示许多记录的表单将跳到顶部,并且一些用户将看不到记录这与他们相关,必须向下滚动才能再次找到它,这并不总是那么容易。

以前,当我只使用网络上的 Access 表时,如果数据发生变化,所有访问表单上的记录都会更新,并且表单不会滚动回顶部...

如果 MySql 上的数据发生更改,是否可以让 Access 表单自动刷新其行?

一种可能的解决方案是,如果我可以让表单在刷新后滚动到完全相同的位置,但不确定是否可以这样做......

【问题讨论】:

    标签: mysql ms-access odbc ms-access-2007


    【解决方案1】:

    检查 Access 应用程序中的 ODBC 刷新间隔。默认值似乎是 1500 秒。也许较低的值将允许您的表单显示其更新的内容而无需代码干预。

    Office 按钮 -> 访问选项 -> 高级,然后在该选项部分末尾附近找到 ODBC 刷新间隔。

    Office 的较新版本 文件 -> 选项 -> 客户端设置 -> 向下滚动到高级 -> 更改 ODBC 刷新间隔(秒)

    此外,由于您已创建代码来检测服务器上的数据更改,然后刷新表单以响应,您可以为表单设置书签,刷新,然后返回到已添加书签的表单行。

    Recordset.Bookmark Property (DAO)

    更新:将表单的记录集类型更改为动态集是解决此问题的关键。

    【讨论】:

    • 我刚刚尝试过 ODBC 刷新,但有趣的是,如果该行从可见屏幕滚动并返回,它只会刷新行数据,否则即使很难我设置刷新它也不会自行完成到 3 秒。至于有效的书签,但它将表单移动到记录并将记录放在屏幕顶部,而不是用户记住的位置。一个精确的滚动位置会做得更好。感谢 ODBC 设置...
    • @Lumis 当用户从列表中选择一条记录时,列表查询不再是当前查询
    • 您似乎是对的,Dynaset 无需重新查询或执行任何其他操作即可更新表单!
    【解决方案2】:

    您的第一个问题“如果 MySql 上的数据发生更改,是否可以让 Access 表单自动刷新其行?”可以明确回答:No.

    当 Access 填充您的表单时,表单中的数据表示将完全独立于数据库中具有相同主键的记录 - MySQL 不知道您对任何更改感兴趣,因此它不会通知访问(实际上:没有这样做的机制)

    关于滚动问题:在 Access 2000 中,这可以通过激活记录来实现,这会将其滚动到视图中。我怀疑它可能与 Access 2007 类似

    【讨论】:

    • 这里的问题是如何让 Access 刷新它的行或整个表单,而不用在超过可见屏幕时将表单滚动回顶部?
    • IIRC 诀窍是在表单上执行requery,然后激活之前激活的相同记录。将此粘贴到任何“有趣”的事件中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多