有過爬文類似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 補充


    感謝..有收到範本..真的收穫很多...





eakfix">


下拉選單連動要用到幾個技巧,
首先資料來源要嵌入表單上的下拉選單內容,
並加上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