有過爬文類似on got focus和AfterUpdate...但還是用不出來..
問題:資料表1內有三個欄位,分別客戶別,設備分類,設備名稱,要將這三欄位設成3層下拉式選單且是連動..
EX:假設有3個客戶為aaa與bbb與ccc,3欄位之紀錄如下:
客戶別,設備分類,設備名稱
aaa,金屬類,鐵鎚
aaa,金屬類,水龍頭
aaa,塑膠類,塑膠盒
bbb,金屬類,門鎖
bbb,皮革類,皮鞋
ccc,木頭類,木門
以上共6筆資料
(1)當我下拉第一層客戶別為aaa時,我可以在第三層下拉設備名稱為鐵鎚或水龍頭或塑膠盒,
(2)當我下拉第一層客戶別為aaa時,我可以在第二層下拉金屬類或塑膠類
上述2點意即不用按順序從第一層->第二層->第三層去尋找,要找第三層,可跳過第二層....
(3)當我下拉第一層客戶ccc時,依據上述6筆資料,第二層與第三層就只有一選項可選.
這功能該如何做?或有範本教導?
2013-06-27 01:13:53 補充
Abear大大...
您回覆內容是爬過其他文章較詳細又有步驟...有幾個問題再請教:
(1)當使用者使用下拉式選單,在查詢時,不小心於下拉選單內輸入字元後按enter.會把資料表1更動到,有何辦法讓資料表1不會被異動到或防止?
(2)屬性中的資料來源和控制項資料來源有何不同?
(3)AfterUpdate跟on got focus有什不同?此案例也可使用嗎?
因小弟剛接觸access,閱讀完稍有一些概念,因打算做5層下拉連動選單,可否再央求一範本參考....感謝不盡...我的mailaddress:dangyi0807@yahoo.com.tw
2013-06-27 14:18:29 補充
感謝..有收到範本..真的收穫很多...
最佳解答
- 發問者自選
er">
下拉選單連動要用到幾個技巧,
首先資料來源要嵌入表單上的下拉選單內容,
並加上like指令,
另外就是下拉選單的requery ,
說明如下:
表單:表單一
下拉選單:Combo1
資料來源:SELECT DISTINCT 資料表1.客戶別 FROM 資料表1;
AfterUpdate事件:
Private Sub Combo1_AfterUpdate()
Me.Combo2.Requery
Me.Combo3.Requery
End Sub
下拉選單:Combo2
資料來源:SELECT DISTINCT 資料表1.設備分類 FROM 資料表1 WHERE (((資料表1.客戶別) Like Forms!表單1!Combo1 & "*"));
AfterUpdate事件:
Private Sub Combo2_AfterUpdate()
Me.Combo3.Requery
End Sub
下拉選單:Combo3
資料來源:SELECT DISTINCT 資料表1.設備名稱 FROM 資料表1 WHERE (((資料表1.客戶別) Like Forms!表單1!Combo1 & "*") And ((資料表1.設備分類) Like Forms!表單1!Combo2 & "*"));
說明:
1.
因為要跳過某條件,
所以資料來源select時不能用等於,
資料表1.客戶別 = Forms!表單1!Combo1
而是用like加上*,
資料表1.客戶別 Like Forms!表單1!Combo1 & "*"
這樣Combo1或Combo2空白時條件還是會成立
2.
讓資料來源重新整理的指令是requery,
Combo11會影響Combo2,Combo13,
所以AfterUpdate事件執行
Me.Combo2.Requery
Me.Combo3.Requery
Combo12只會影響Combo13,
所以AfterUpdate事件執行
Me.Combo3.Requery
2013-06-27 10:22:17 補充
1. 跟 2. 有關一起回答,
首先表單的屬性中有一個"記錄來源",
可以決定這個表單裡的資料要連到那個資料表,
當然也可以是空白不連到任何資料表,
至於"控制項資料來源",
是指該控制項要連到那個欄位,
空白的話就不跟任何欄位連動,
"資料來源"則是下拉選單或清單方塊才有的屬性,
可以指定清單的內容有那些值,
所以上面有個"資料來源類型",
要先選是"資料表/查詢","值清單"..
再指定"資料來源"的內容,
除了上述的select外,
也可以直接用現有的查詢.
2013-06-27 10:31:22 補充
所以你只要把"控制項資料來源"清空,
就跟欄位無關了,
不過其實根本的錯誤在表單的紀錄來源應該清空,
現在並不是要針對表單1並不是針對資料表1要進行異動,
當然不需要設紀錄來源..
3. on get focus 比較類似 onclick,
就是該控制項被選到時,
可能游標剛下去未下拉,
未下拉之後未選新值,
這時候去執行程式其實沒有意義,
還不如在on lost focus執行,
也就是選完離開時執行,
不過印象中after update會判斷有沒有異動,
也就是內容跟原先一樣根本沒改的話就不會觸發,
比較不會浪費效能做白工..
2013-06-27 10:35:04 補充
一個動件可能會觸發很多事件,
access的事件順序可參考..
http://office.microsoft.com/zh-tw/access-help/HA010238988.aspx
留言列表