2011-09-02 22 views
0

我在MS-Access中有一個標準表格,其中列出了一堆訂單,每行包含訂單號,客戶等字段+一個按鈕,用於查看備註和附加的文檔文件。用VBA代碼有條件地填寫表格行的(細節)按鈕

根據我們客戶的要求,我們應該根據從兩個查詢到另外兩個表的計算(SELECT COUNT WHERE並檢查一個文本字段是否爲空)來灰化按鈕btnAnm(或者選中或取消選中複選框) 。

我試過btnAnm_BeforeUpdate(...)btnAnm_BeforeRender(...)並在子目錄中放置了斷點,但沒有一個觸發。如果我使用控件Ordernr而不是btnAnm,那也是一樣。

我想要爲每個「Me.」(行)觸發詳細VBA代碼中的函數,並在該子行中設置該行的控件屬性。

我該怎麼辦?我看過幫助文件並在這裏​​搜索。

*編輯:所以我想做的事情「不是爲了這樣工作」? IE瀏覽器。細節中不會觸發事件。 作爲一種替代方案,我可以基於當前行的'Ordernr'字段和另一個表中的SELECT COUNT結果以及空字段檢查,在查詢的每一行上設置複選框的值嗎?

我會在列表所基於的查詢中執行此操作,還是可以將額外的複選框字段綁定到查詢?

如何做到這一點(將COUNT和WHERE「不爲空」結合到yes/no複選框值)的說明完全可以接受,我想! :)*

+0

你能顯示一些代碼嗎?特別是在你想要觸發代碼的地方 – JMax

+0

在哪裏把代碼,因此它被觸發的每個細節行是我(是?)問,代碼是btnAnm.ForeColor = 0現在...;) –

回答

3

對於連續形式的未綁定控件,您無法做很多事情,您所做的任何操作都只適用於當前記錄。您可以使用帶有點擊事件的綁定控件,以便它像按鈕一樣工作。

想必相關文件必須是你的形式,這意味着你可以創建一個控件上顯示的訂單號的參考,讓我們把它叫做CountOrders,用控件,像這樣:

=DCount("OrderID","QueryName","OrderID=" & [OrderID]) 

的控件可以隱藏起來,或者你可以將它設置爲返回true或False以便與文本框一起使用,你也可以將它用於條件格式化,但不幸的是,不能用於命令按鈕。

Expression Is [CountOrders]>0 

您還可以隱藏內容並添加單擊事件,以代替命令按鈕。條件格式將允許您啓用或禁用文本框。

+0

我' m完全滿意,只是因爲這兩個查詢的結果「標記」行,在該行上更改某個元素的顏色或設置複選框的值。它的標記是爲了讓用戶知道是否有附在訂單上的附註/文件。 –

+0

@Henrik我添加了一些註釋。 – Fionnuala

+0

確實需要一個額外的控制+控制源,在我們的情況下,有一個附近的複選框而不是灰色的按鈕是客戶可以接受的。謝謝! –

2

正如我理解你的問題,你有一個連續的形式與作爲命令按鈕,出現在每一行 - 你想啓用/禁用按鈕條件取決於行的內容。

不幸的是,你不能這樣做。看起來你不能單獨引用各個命令按鈕。

想要在過去做類似的事情,我想出了兩種設置界面的替代方法。

  1. 將陷阱置入按鈕的onClick代碼中。這是狡猾的,因爲它是對用戶不直觀的。但它現在讓你獲得這種功能。
  2. 將命令按鈕(和可編輯字段)向上移動到表單標題中,並使行只能讀取。然後,用戶只能在標題中與記錄進行交互,並在下面的列表中選擇他們想要處理的記錄。據我所知,這是已知的主 - 細節界面。
+0

這是一個帶有標題,重複細節和頁腳的表單。回覆。 1,就是這樣。有可點擊的東西,告訴你它是否可點擊(非空)與顯示空訂單表單一樣糟糕,這正是我想要阻止的。回覆。 2,改變UI現在不是一個選項。 –

+0

Re#1 - 正如我所說 - 它是icky。回覆:#2 - 每項技術都有其侷限性,這是其中之一。 – BIBD