Access Query的更新速度不够快

时间:2013-01-13 07:55:06

标签: sql database ms-access database-design

我正在建立一个关键的库存管理系统。我创建了一个查询,通过识别哪些密钥已被退回,未丢失或从未租用过来显示当前未使用的密钥。我将此查询复制到keyActivity表中的key_id的查找字段中(用于记录键签名)。问题是在表keyActivity关闭并再次打开之前,查询不会更新以提供可用密钥

示例:我打开keyActivity,表示key_id = 5丢失。当我转到新记录并选择要注销的密钥时,key_id = 5将显示为可用。直到我关闭表再次打开它,才从列表中删除key = 5。

在这里你可以看到键5在id 5中表示丢失,但在id 7中选择键时,5表示不应该。  enter image description here

无论如何要解决此问题或将其设置为按预期工作。我计划使用表单来呈现所有信息。是否有表格解决方案?

1 个答案:

答案 0 :(得分:2)

建议您最好使用Form更改表格数据。可以轻松requery来根据您所做的更改更新表,并相应地显示已更新的数据。另请阅读给定的参考资料以获取更多信息。

在数据更新和locks in a multi user environment this article could be helpful.

方面

Access is NOT a database server. It's a desktop database. It has been pushed to the limit to support mutli-user environments, but only in the sense that you can share the "back end" database across a network.” ... ...

Even the record locking is performed by the Front End. All of the front end database applications share the "lock file" (a file with the same name as the database file, but with the extension LDB); but that file is simply a mechanism that the front ends use to determine which front end can make changes to the database.” ....

以下是requery和refresh之间的区别:

Me.Requery强制重新加载表单的整个记录​​集(基础数据)。这意味着您当前表单中的所有记录都将重新加载。你现在的位置会丢失,所以如果你坐在100的记录中,你会发现自己回到了第一个记录。 Me.Requery与关闭和重新打开表单基本相同。其他并发用户添加的任何新记录都将可用。同样,任何已删除的记录都将消失。 Requery本质上是“重新运行查询”,它首先将数据拉入表单。您还可以使用requery更新列表框或组合框中的数据。

Me.Refresh保存您正在处理的当前记录。它还将检索当前表单中显示的任何记录的任何更改(但不添加或删除)。将重新计算表单上的任何计算(未绑定字段)。刷新不会重新加载记录集。你不会在表格中失去你的位置(你留在当前的记录)。其他用户添加的任何新记录都不会显示。