我有一个使用MySQL ODBC连接器连接到MySql表的前端Access 2007数据库。
问题是,如果数据被网络上的其他用户更改,或者数据被弹出窗体更改,则链接到表格的表单将不会刷新其数据。
如果我创建一个VBA代码来检测更改,然后刷新表单或重新查询,那么在表格中显示许多记录的表单将跳转到顶部,一些用户将失去记录的视线这与他们有关,并且必须向下滚动才能再次找到它,这并不容易。
以前,当我在网络上仅使用Access表时,如果数据发生变化,记录将在所有访问表单上更新,并且表单不会滚动回到顶部...
如果在MySql上更改数据,是否可以使Access表单autamaticaly刷新其行?
一种可能的解决方案是,如果我可以让表单在刷新后滚动到非常相同的位置,但不确定是否可以这样做...
答案 0 :(得分:2)
检查Access应用程序中的ODBC刷新间隔。默认值显示为1500秒。也许较低的值将允许您的表单在没有代码干预的情况下显示其更新的内容。
Office按钮 - >访问选项 - >高级,然后在该部分选项的末尾附近找到ODBC刷新间隔。
较新版本的Office 档案 - >选项 - >客户端设置 - >向下滚动到高级 - >更改ODBC刷新间隔(秒)
此外,由于您已创建代码来检测服务器上的数据更改,然后刷新表单作为响应,您可以为表单设置书签,刷新,然后返回到书签形式行。
Recordset.Bookmark Property (DAO)
更新:将表单的Recordset Type更改为Dynaset是解决此问题的关键。
答案 1 :(得分:1)
您的第一个问题“如果在MySql上更改数据,是否可以使Access表单自动刷新其行?”显然是有责任的:不。
当Access填充了您的表单时,表单中数据的表示变得完全独立于数据库中具有相同主键的记录--MySQL不知道您对任何更改感兴趣,因此它不会通知访问(事实上:没有这样做的机制)
关于滚动问题:在Access 2000中,这可以通过激活记录来实现,该记录会将其滚动到视图中。我怀疑它可能与Access 2007相似