2010-11-27 74 views
0

我在MS Access 2010中有一個表單,其中有兩個子表單。我已經與表單背後的表格定義了一對一的關係。這兩個子表格都應該用來在相應的表格中創建記錄,然後更新父表格中的外鍵。但是,當我首先填寫子表格時,會在相應的表格中創建一個條目,但外鍵不會更新。這不應該自動發生?或者我應該添加更新父窗體字段的代碼?子表單集成在Ms Access 2010中無法正常工作

此外,當我開始填寫主窗體,然後跳轉到任何子窗體時,我收到以下錯誤消息:
「您必須在'Activations.dbBoxID'字段中輸入一個值(激活是這裏的主要形式,dbBoxID是外鍵字段。)

另一個問題是,我不希望子表單更新相應的表,直到主表中的條目也被創建(即所有必填字段在主要形式也填充)。

我是新來的MS Access。任何幫助將非常感激!

+0

您的表單顛倒了。您存儲外鍵的表是CHILD表,並且應該位於子表單中,FK的值將從其中繪製爲父表單。這是LinkChild/LinkMaster屬性可以運行的唯一方式。 – 2010-11-28 01:06:12

+0

這很有道理。我不知道subform-parentform relationship這種方式的作用。我很快寫了一個示例數據庫,它的工作完美無瑕。謝謝大衛! – Prashant 2010-11-29 09:00:47

回答

0

如果首先輸入父表單中的數據,則具有子表單的表單工作得更好。然後,子表單可以在parent_key上連接到每個表中的foreign_key,而無需任何代碼。

如果您希望讓用戶先在子表單中輸入記錄,那麼在父表單完成/保存之前不要更新它們,您需要進行一些編碼。不知道爲什麼你需要/想要這樣做?

一個包含賬單和付款子表單的客戶表單,例如,您可以輸入足夠的客戶數據來創建記錄。然後可以輸入賬單和/或付款。

+0

有道理。我已經改變了表單層次結構,現在一切正常:)。謝謝! – Prashant 2010-11-29 09:05:38

2

您在這裏缺少的概念,以及沒有向您解釋的是,當您在訪問中構建主從關係時,可以使用表單和子表單建模這些關係,但是您將表單建立在實際的表格而不是將這些表格結合在一起的查詢。

換句話說,您的主窗體應該基於主表或父表。不要參加子表。我要重複一遍:不要加入子表。

因此,您可以將主窗體或主窗體基於查詢,但是當您這樣做時,請不要加入該查詢中的子表。事實上,在大多數情況下,無論如何,在查詢中使用和基於表單確實沒有任何優勢。只需創建表格,並將其基於表格。

同樣的建議適用於子窗體。您將子窗體基於子表。您不要使用連接查詢。

您收到錯誤消息的原因是因爲您對基於兩個表的主窗體有查詢。通過強制關係,當您的焦點從主窗體切換到子窗體時,會出現主窗體的記錄保存,因此您會收到錯誤消息。

因此,您的錯誤和問題是由於您在兩個表的聯接的查詢基礎上進行表單處理時(在此情況下不需要)。