2011-09-30 187 views
1

這一個困擾着我,因爲我所做的事似乎很直接。寫入衝突非常簡單Access窗體與子窗體

我有一個未結合的形式(frmAdmin)與列表框(lstUsers),並且還包含一個列表框(lstUsergroups)子窗體。

lstUsers是未綁定的,並顯示用戶名列表(行源users表中留下參加與users.fk__ContactID = contacts.pk__ContactID聯繫人表,以便我能得到的名稱顯示)

子窗體綁定到用戶表具有過濾器pk__UserID = Forms!frmAdmin!lstUsers

lstUsergroups顯示了用戶組列表,該列表綁定到用戶表中的fk__Usergroup字段。

唯一涉及的VBA是lstUsers上的單擊事件,該事件重新查詢子表單。

當我從lstUsers中選擇一個用戶時,子表單列表框顯示用戶的用戶組選擇,但如果我選擇不同的用戶組,然後選擇另一個用戶或關閉表單,我得到寫入衝突「此記錄已被另一個用戶「等。

這看起來很簡單!什麼會導致寫入衝突?沒有其他表單是打開的,users表是一個鏈接的SQL Server表,但沒有任何觸發器應該寫入它。這只是一個表單,一個子表單和一個點擊事件。

+0

爲什麼使用listbox而不是表單/子表單?我絕不會模擬你在子表單上描述的東西(雖然當然可能是一個組合框)。 –

+0

我正在使用一個子窗體,它對我想讓UI工作的方式有意義。應該有一個用戶列表和一個用戶組列表。當我選擇一個用戶時,他們的用戶組應該顯示爲選中狀態,然後我應該可以通過在用戶組列表中選擇另一個項目來更改他們的用戶組。據我可以告訴這不是控制類型的問題,但告訴我,如果我錯了。 – jasongetsdown

+0

表單和子表單對列表工作得非常好,並且它們中的數據是可編輯的,而列表框不是這種情況。這一切都取決於你想做什麼,但作爲父母(可能有一個用於導航的列表框)的連續形式,和數據表子表單(沒有列表框,但是用於選擇用戶的組合框)將是正常的UI,似乎我。 –

回答

1

確保SQL表具有主鍵,然後更新您的鏈接表。如果這看起來沒有解決它,請嘗試添加一個時間戳字段到獲得寫衝突的SQL表,然後再次更新鏈接表。這一直髮生在我身上。 Access似乎對它實際使用的唯一標識符有些疑惑。

+0

時間戳做到了。我應該考慮這樣做。我在另一個表中有類似的問題,並添加一個時間戳解決了它。謝謝!後續問題:爲什麼時間戳列的存在解決了這個問題,即使是每個記錄都是空白的? – jasongetsdown

+0

它實際上並不空白。它是DB服務器專門用於記錄版本控制的數據類型(至少在MS SQL Server上)。 Access知道如何使用它,所以幸好所有通常需要的是在添加字段後更新鏈接表。 –

+0

真棒,真棒......我從來沒有聽說過這個,但是當我嘗試使用更多的標準化鏈接表時,它保存了我。我認爲Access在主域<->子域沒有與正在編輯的字段對齊時是混淆的 - 單獨匹配「查找」。但只是把時間戳放在編輯過的表格裏! –