close


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









arrow
arrow
    全站熱搜
    創作者介紹
    創作者 lori82b001 的頭像
    lori82b001

    小人物狂想曲

    lori82b001 發表在 痞客邦 留言(0) 人氣()