2011-07-17 87 views
2

首先,介紹一下我的設置。計算的控件不會自動重新計算

我有三個表的原始數據庫:

A.表,列出了不同的位置:location_code],[LOCATION_NAME]

B.表描述項目:[ITEM_CODE] ,[ITEM_NAME],[ITEM_PRICE]

,最後是關係在Roo表^ H^H^H ^整個數據庫一起

C.表格說明哪些項目存儲在每個位置以及數量:[location_code],[item_code],[item_quantity]。該表可以具有多個具有相同[位置代碼]的條目,因爲不同的條目可以存儲在相同的位置。基本上,這是一個從地點到項目的一對多關係的教科書實現,每個位置項目鏈接都附加了一個額外的屬性(數量)。

現在,我需要做的就是創建一個表格,列出存儲在特定位置的所有項目。這是Access中「子窗體」功能的基本用例。主表單簡單地瀏覽不同的位置,而子表單列出項目。

我用

SELECT C.location_code, B.item_name, B.item_code, B.item_price, C.item_quantity 
FROM B INNER JOIN C ON B.item_code=C.item_code 

爲子窗體記錄源。主窗體通過[location_code]鏈接到子窗體。該子表單用列表佈局(不是表格佈局)來設置,即每個數據庫字段都被賦予其自己的控制元素。

到目前爲止一切正常。我在主窗體中選擇位置,並且該子窗體爲我提供了當前位置的可編輯[item_name] - [item_price] - [item_quantity]三元組列表。

作爲下一步,我想爲每個上述三元組添加一個計算控件。我想知道每種產品的總價格(即,每行中的[item_price] * [item_quantity])。很容易,我將計算控制添加到子表單的「可重複」區域,並指定

= [item_price] * [item_quantity] 

作爲值的公式。再次,一切都完美。現在,除了上述三元組外,我的列表每行有四個條目:[item_name] - [item_price] - [item_quantity] - [total_item_price]。而且,當我編輯[item_price]或[item_quantity]時,重要的是,完成編輯後[total_item_price]會自動重新評估。

作爲最後一步,我想添加另一個計算控件,顯示當前位置存儲的所有項目的總價格(我們稱之爲「總計」)。 A也發生控制到窗體(進入「註腳」區域這段時間),並指定以下公式作爲其價值

= SUM([item_price] * [item_quantity]) 

現在,這個工程。每次在主窗體中更改位置時,總計值都會正確計算。此外,當我更改當前位置的任何商品的[item_price]時,總計也會自動更新。但是,當我更改[item_quantity]時,總計不會更新(???)。擊中F9將使其更新。來回更改當前位置會更新它。但不幸的是,對[item_quantity]的簡單更改不會觸發自動更新。

有誰知道,這裏有什麼可能是錯的?爲什麼[item_price]中的更改會觸發總計的自動更新,而[item_quantity]中的更改不會?直觀上,這些領域似乎具有相同的地位(除了前者來自表B,而後者來自表C)。爲什麼行爲不同?我如何使其自動更新?

+0

你需要做的的計算上的子窗體所有三個活動:1.更新 2.後插入 3.在刪除之後確認,但有一個bug,如果你複製和粘貼多個記錄進入子窗體。我仍在尋找解決方案。問候理查德 –

回答

0

如果您通過記錄選項卡並前進到下一個記錄,它仍然不會更新。我在考慮價格是製表符順序中的最後一個字段,因此當您更改它時,您將選擇下一條記錄並提交更改。如果我是正確的,那麼當您編輯數量時,您的選項卡會將您推到仍處於當前記錄中的價格字段,以便更改不會提交給表格。如果您繼續前進,則應完成處理。

+0

是的,我知道這一點。我完成了對該記錄的編輯,即我跳到下一個記錄。然而,不幸的是,更新不會發生。 – AnT

+0

我期望類似@HansUp的建議(重新計算文本框)應該能夠工作,但我仍然會質疑爲什麼。看看你的select語句,它似乎應該以A或C.location_code開頭,而不是B,但我必須認爲這是一個錯字,否則你沒有給我們所有正確的信息。 –

+0

是的,你是對的。它應該是'C.location_code'。我修復了問題中的查詢。 – AnT

5

在您的子窗體的更新事件後,明確重新計算總價格控制。

Me.txtTotalPrice.Requery