2013-01-13 69 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保存您正在處理的當前記錄。它還會檢索當前表單中顯示的任何記錄的任何更改(但不會增加或刪除)。表單上的任何計算(未綁定字段)都會重新計算。刷新不會重新加載記錄集。你不會失去你在表格中的位置(你留在當前記錄中)。不會顯示其他用戶添加的任何新記錄。