2013-01-13 71 views
0

Im建立关键库存管理系统。我创建了一个查询,通过识别哪些密钥已被返回,没有丢失或从未被租用,显示当前未使用的密钥。我将此查询复制到keyActivity表中的key_id查找字段中(用于记录关键签出)。问题是,直到表keyActivity被关闭并再次打开访问查询不够快速更新

示例查询不更新,以提供可用的键:我打开keyActivity,表明KEY_ID = 5丢失。当我转到新记录并选择要退出的密钥时,key_id = 5会显示为可用。直到我关闭桌子,再次打开它,键= 5才从列表中移除。

在这里你可以看到按键5指示为选择键时迷失在ID 5,但在ID 7,5可用时,它不应该。 enter image description here

有无论如何解决这个问题或设置它以达到预期的效果。我计划使用表单来呈现所有信息。也许有一种表单解决方案?

+0

这是通过[记录锁定]引起的(http://en.wikipedia.org/wiki/Record_locking)。我多年没有使用过Access,但它曾经一次性锁定多个记录或整个表。尝试将[默认锁定策略](http://office.microsoft.com/en-gb/access-help/set-options-for-a-shared-access-database-mdb-HP005188297.aspx)更改为“已编辑”记录'。该选项在tool \ options \ advanced中可用。 – Steve

+0

我将其更改为“已编辑记录”,但它仍显示在下拉列表中。 – Batman

+0

我假设如果我使用表单,我可以放入一个代码来刷新记录更新中的表单(和表中的表)。从那里,查询查询可能会更新并显示更新的键可用?像me.refresh或me.requery?你认为这可能解决问题吗? – Batman

回答

2

的建议,你会用Form更好变更表中的数据。它可以很容易地requery -ed根据您所做的更改来更新表并显示相应的数据。请阅读有关更多信息的给定参考。

在数据更新方面和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.” ....

这里是重新查询和刷新之间的差异:

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

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