版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、在兩個組合框之間建立依賴關(guān)系適用于: Microsoft Office Access 2003 全部顯示2005 年 1 月 31 日作者 Sal Ricciardi進行選擇是組合框的用途,但是有時選擇之間存在依賴關(guān)系。在本部分中,將學習如何創(chuàng)建一個組合框,以使其列表依賴于在另一個組合框中所做的選擇。我們在示例數(shù)據(jù)庫中提供了一個示例,可供您下載。適用于Microsoft Office Access 2003Microsoft Access 2000 和 2002問題:如何創(chuàng)建一個組合框,并且限制其列表基于在另一組合框中所做的選擇? 使第二
2、個組合框 (組合框:窗體上用來提供列表框和文本框的組合功能的一種控件。用戶既可以在組合框中鍵入一個值,也可以單擊該控件以顯示一個列表,然后從列表中選擇一項。)基于一個查詢,該查詢要與包含第一個組合框中的所選值的行相匹配。還需要在特定窗體和控件事件 (事件:由對象識別的操作,如鼠標單擊或按鍵,可為這些操作定義響應(yīng)。事件可能由用戶操作或 Visual Basic 語句引發(fā),或者由系統(tǒng)觸發(fā)。)中輸入一些 Microsoft Visual Basic for Applications (VBA) 代碼。該代碼可確保發(fā)生特定操作(如在第一個組合框中做出選擇,或者第一次打開窗體)時,組合框顯示正確的值。首
3、先,請查看“行源”和“行源類型”屬性 (屬性:控件、字段或?qū)ο蟮拿麑傩裕梢酝ㄟ^設(shè)置屬性來定義對象的某種特征(如大小、顏色或屏幕位置)或?qū)ο笮袨榈哪硞€方面(如對象是否隱藏)。)。 “行源”和“行源類型”簡介使用“行源”屬性,可以定義組合框中顯示的項目的源。將該屬性與“行源類型”屬性一起使用可指示 Access 如何填充組合框。例如,可以將“行源類型”屬性設(shè)置為表/查詢,然后將“行源”屬性設(shè)置為某個查詢的名稱。然后,Access 會運行該查詢,并使用結(jié)果填充該組合框。不必使用已經(jīng)保存的查詢。通過將“行源類型”屬性設(shè)置為表/查詢,可以創(chuàng)建一個查詢,該查詢在組合框的“行源”屬性中以 SQ
4、L SELECT 語句形式存在。在本文示例數(shù)據(jù)庫的示例窗體中使用了該方法。下表中列出了“行源類型”屬性的可能設(shè)置。設(shè)置說明表/查詢從“行源”屬性指定的表、查詢或 SQL 語句中獲取數(shù)據(jù)。這是默認設(shè)置。值列表從“行源”屬性指定的項目列表中獲取數(shù)據(jù)。字段列表從“行源”屬性指定的表、查詢或 SQL 語句的字段名稱列表中獲取數(shù)據(jù)。在大多數(shù)情況下,將使用默認的表/查詢設(shè)置。創(chuàng)建示例窗體可以下載本專欄的示例數(shù)據(jù)庫(英文)。該數(shù)據(jù)庫中提供了演示此處介紹的方法的示例窗體。要自己創(chuàng)建示例窗體,請啟動 Access 并按照下面的擴展部分中的步驟操作,然后繼續(xù)進行專欄的剩余部分。分步說明:如何創(chuàng)建示例窗體請執(zhí)行下列
5、操作之一:創(chuàng)建新窗體1. 在“數(shù)據(jù)庫”窗口中的“對象”下,單擊“窗體”。2. 在“數(shù)據(jù)庫”窗口的工具欄上,單擊“新建”。3. 在“新建窗體”對話框中,單擊“設(shè)計視圖”,然后單擊“確定”。在“設(shè)計”視圖中打開現(xiàn)有的窗體1. 在“數(shù)據(jù)庫”窗口中的“對象”下,單擊“窗體”。2. 單擊某個窗體,然后單擊“數(shù)據(jù)庫”窗口中的“設(shè)計”。添加 Category 組合框 1. 在工具箱中,單擊“控件向?qū)А卑粹o,以便使其顯示為處于選中狀態(tài)。 注釋 如果工具箱不可見,請在“視圖”菜單中,單擊“工具箱”。2. 在工具箱中,單擊“
6、組合框”工具。3. 在窗體的設(shè)計網(wǎng)格內(nèi)單擊并拖動以創(chuàng)建組合框。4. 在“組合框向?qū)А敝?,單擊“使用組合框查閱表或查詢中的值”旁邊的按鈕,然后單擊“下一步”。5. 在“視圖”部分中,單擊“表”。6. 單擊列表中的“表: 類別”,然后單擊“下一步”。7. 在“可用字段”中,雙擊“類別 ID”和“類別名稱”,以便二者同時出現(xiàn)在“選定字段”中,然后單擊“下一步”。8. 在“請確定列表使用的排序次序:”頁中,在第一個列表中單擊“類別名稱”,然后單擊“下一步”。9. 在下一頁上,確保選中“隱藏鍵列(建議)”復(fù)選框,然后單擊“下一步”。10. 為組合框鍵入標簽。根據(jù)該列的目的,我使用了類別名稱:。11. 單
7、擊“完成”。12. 保存該窗體。指定“名稱”屬性 1. 當窗體在“設(shè)計”視圖中依然處于打開狀態(tài)時,單擊新組合框。2. 在“視圖”菜單上,單擊“屬性”。3. 在“名稱”框中,鍵入 Category。4. 關(guān)閉查詢屬性表。添加 Product 組合框 1. 在工具箱中,確保選中了“控件向?qū)А卑粹o。 注釋 如果工具箱不可見,請在“視圖”菜單中,單擊“工具箱”。2. 在工具箱中,單擊“組合框”工具。3. 在窗體的設(shè)計網(wǎng)格內(nèi)單擊并拖動以創(chuàng)建組合框。4. 在“組合框向?qū)А?/p>
8、中,單擊“使用組合框查閱表或查詢中的值”旁邊的按鈕,然后單擊“下一步”。5. 在“視圖”部分中,單擊“表”。6. 單擊列表中的“表: 產(chǎn)品”,然后單擊“下一步”。7. 在“可用字段”中,雙擊“產(chǎn)品 ID”、“產(chǎn)品名稱”和“類別 ID”,以便三者同時出現(xiàn)在“選定字段”中,然后單擊“下一步”。8. 在“請確定列表使用的排序次序:”頁中,在第一個列表中單擊“產(chǎn)品名稱”,然后單擊“下一步”。9. 確保選中“隱藏鍵列(建議)”復(fù)選框,然后單擊并拖動“類別”列的右邊框以縮小該列,直到該列消失。單擊“下一步”。10. 為組合框鍵入標簽。根據(jù)該列的目的,我使用了產(chǎn)品名稱:。11. 單擊“完成”。12. 保存該
9、窗體。指定“名稱”屬性 1. 單擊“Product”組合框。2. 在“視圖”菜單上,單擊“屬性”。3. 在“名稱”框中,鍵入 Product。4. 關(guān)閉屬性表。添加狀態(tài)文本框 1. 在工具箱中,單擊“文本框”工具。 注釋 如果工具箱不可見,請在“視圖”菜單中,單擊“工具箱”。2. 在窗體的設(shè)計網(wǎng)格內(nèi)的兩個組合框下方單擊并拖動,以創(chuàng)建文本框。3. 在“視圖”菜單上,單擊“屬性”。4. 在“控件來源”框中,準確地鍵入="您選擇了“& Catego
10、ry.Column(1) &”類別中的“& Product.Column(1) &”產(chǎn)品!"5. 關(guān)閉屬性表。6. 刪除與剛剛創(chuàng)建的文本框相關(guān)聯(lián)的標簽。添加可選的說明性文本框 1. 在工具箱中,單擊“文本框”工具。 注釋 如果工具箱不可見,請在“視圖”菜單中,單擊“工具箱”。2. 在窗體的設(shè)計網(wǎng)格內(nèi)的兩個組合框下方單擊并拖動,以創(chuàng)建文本框。在示例窗體中,我將該文本框放在兩個組合框之間:Product 組合框上方,Category 組合框下方。 3. 在“視圖”菜
11、單上,單擊“屬性”。4. 在“控件來源”框中,準確地鍵入="在選擇類別后,產(chǎn)品列表將更改,從而只提供屬于該類別的產(chǎn)品。"5. 關(guān)閉屬性表。6. 刪除與剛剛創(chuàng)建的文本框相關(guān)聯(lián)的標簽。7. 保存該窗體。設(shè)置文本框的格式(可選) 1. 增加字體大小,并更改字體顏色。2. 調(diào)整每個文本框大小并移動它們,以適應(yīng)文本。3. 將“背景樣式”屬性設(shè)置為透明,以便文本框的背景色與窗體的背景色相匹配。確保按照本專欄中其余的步驟操作,以向 Product 組合框添加條件并在合適的位置包含代碼,以及不斷更新組合框。如何向產(chǎn)品查詢添加條件因為您可以通過
12、Access 使用查詢的結(jié)果填充組合框,所以可以向該查詢添加條件,以限制組合框中的顯示內(nèi)容。在示例中,我們希望第二個組合框的條件將結(jié)果限制為只有那些與第一個組合框中的值相匹配的行。例如,假設(shè)要創(chuàng)建名為 Category 的類別組合框和名為 Product 的產(chǎn)品組合框。單擊“Category”組合框時,您希望 Product 組合框僅列出該類別中的產(chǎn)品。通過在查詢中為與 Category 組合框中的當前值相匹配的 Product 組合框添加條件,可以實現(xiàn)該任務(wù)。向查詢添加條件 1. 打開 Product 組合框的屬性表。2. 單擊“行源”框,然后單
13、擊出現(xiàn)的省略號按鈕 (.)。3. 在“查詢生成器”中,確保字段網(wǎng)格列出了需要在 Product 組合框中顯示的產(chǎn)品表中的列,如“產(chǎn)品ID”、“產(chǎn)品名稱”等等。請確保包含“類別 ID”字段。4. 在“查詢生成器”網(wǎng)格的“類別 ID”列中的“條件”行中,鍵入 窗體!組合窗體!類別,使用您的窗體的名稱替換“組合窗體”。該條件指示 Access 將查詢結(jié)果限制為只有那些與 Category 組合框中當前所選的值相匹配的那些行。“查詢生成器”網(wǎng)格可能如下圖之一所示。5. 最后,關(guān)閉“查詢生成器”,然后關(guān)閉該查詢屬性表,在 Access 提示保存更改時,單擊“是”。Access 在關(guān)閉“查詢生成器”時將
14、SQL 語句插入到“行源”屬性中。SQL 語句包含如下所示的 WHERE 子句。WHERE (產(chǎn)品.類別 ID)=窗體!組合窗體!類別)WHERE 子句將行限制為只包含那些與 Category 組合框中的值相匹配的行。6. 保存該窗體。了解“綁定列”屬性和“列數(shù)”屬性使用組合框向?qū)У膬?yōu)勢之一是它自動填充所需的屬性。這些屬性中有兩個需要做進一步的解釋。· “綁定列”屬性指示 Access 組合框中哪一列包含將與該控件相關(guān)聯(lián)的值。該屬性使用表示行源中的列的數(shù)字,從 1 開始,并從左到右繼續(xù)到 2、3 等。通常,選擇包含主鍵的列,如“類別 ID”或“產(chǎn)品 ID”。這樣,如果引用該控件的值,
15、則可以得到所選行的“類別 ID”或“產(chǎn)品 ID”字段的值。例如,表達式 窗體!組合窗體!類別(在上圖所示的“查詢生成器”網(wǎng)格中輸入)返回 Category 組合框控件中所選行的“綁定列”屬性中存儲的值。因為 Category 組合框的“綁定列”屬性設(shè)置為 1,代表“類別 ID”列,所以返回“類別 ID”字段中的值。然后,該查詢使用類別 ID 值與 Product 組合框的行匹配。· “列數(shù)”屬性指示 Access 在組合框中有多少列。例如,對于 Category 組合框,因為在行源中有兩列:“類別 ID”和“類別名稱”,所以要將該屬性的值設(shè)置為 2。對于 Product 組合框,因為
16、行源包括“產(chǎn)品 ID”、“產(chǎn)品名稱”和“類別 ID”列,所以要將“列數(shù)”屬性設(shè)置為 3。請注意,在計算“列數(shù)”的值時,必須計算其值在 Access 中設(shè)置為可用的所有列,不管該列在組合框中是否實際可見??梢允褂谩傲袑挕睂傩噪[藏列。有關(guān)詳細信息,請參閱隱藏列部分。如何隨時更新組合框每當 Category 組合框中的值更改時,必須更新 Product 組合框。為此,可以添加 VBA 代碼,以便每當 Category 組合框更新時,重新查詢 Product 組合框的行源。Access 為實現(xiàn)該目的提供了 AfterUpdate 事件。 我們來看一下 AfterUpdate 事件的代碼。首先,將 Pr
17、oduct 組合框的值設(shè)置為 Null,這樣可以確保最初在該框中不顯示任何內(nèi)容。這種做法很好,因為一旦選擇了某種類別,Product 組合框中當前選中的值就會由于當前顯示的產(chǎn)品屬于上一個類別而無效。 接下來,通過調(diào)用 Requery 方法根據(jù)當前類別重新填充 Product 組合框。最后使用“項目數(shù)據(jù)”屬性將 Product 組合框預(yù)設(shè)為列表中的第一項?!绊椖繑?shù)據(jù)”屬性返回組合框或列表框中指定行的值。因為該列表是基于零的,所以請記住要選擇 0 作為第一行的索引,而不是 1。Private Sub CategoryAfterUpdate() Me.Product = NullEnd S
18、ub有關(guān)如何在 Category 組合框的 AfterUpdate 事件中編寫代碼的詳細分步說明,請參閱下面的擴展部分。分步說明:如何在第一個組合框中編寫代碼,以自動更新第二個組合框要創(chuàng)建代碼,請執(zhí)行下列操作:在“設(shè)計”視圖中打開窗體 1. 在“數(shù)據(jù)庫”窗口中的“對象”下,單擊“窗體”。2. 單擊某個窗體,然后單擊“數(shù)據(jù)庫”窗口中的“設(shè)計”。編輯 Category_AfterUpdate 過程 1. 單擊“Category”組合框以將其選中。2. 在“視圖”菜單上,單擊“屬性”,然后單擊“事件”選項卡。
19、3. 單擊“更新后”框,然后單擊出現(xiàn)的省略號按鈕 (.)。4. 當“選擇生成器”對話框出現(xiàn)時,單擊“代碼生成器”,然后單擊“確定”。5. 在 Visual Basic 編輯器 (Visual Basic 編輯器:一種環(huán)境,用于編寫新的 Visual Basic for Applications 代碼和過程,并編輯已有的代碼和過程。Visual Basic 編輯器包括完整的調(diào)試工具集,用于查找代碼中的語法、運行時和邏輯問題。)中輸入代碼,以便 Category_AfterUpdate 過程與上一個示例所示完全相同。6. 完成后,在“文件”菜單上,單擊“保存”。然后,在“文件”菜單上,單擊“關(guān)閉并
20、返回到 Microsoft Office Access”。 7. 關(guān)閉屬性表。8. 關(guān)閉該窗體。打開窗體時需要執(zhí)行的操作第一次打開窗體時,您可能會發(fā)現(xiàn)組合框不顯示值,這是由于您尚未進行選擇。對于示例窗體,我認為最好顯示類別列表中的第一個值和該類別的第一個產(chǎn)品,因此我在窗體的 Load 事件中輸入了以下 VBA 代碼。在第一次打開窗體時調(diào)用該代碼。它將類別設(shè)置為列表中的第一個值,然后調(diào)用 Category_AfterUpdate 過程,以更新 Product 組合框。Private Sub Form_Load(Cancel As Integer) Call Category_AfterUpdat
21、eEnd Sub示例窗體使用未綁定 (未綁定控件:未與基礎(chǔ)表、查詢中的字段或 SQL 語句連接的控件。未綁定控件通常用于顯示信息性文本或裝飾性圖片。)組合框。未綁定組合框是未與表或查詢中的字段鏈接的一種組合框。如果使用綁定 (綁定列:列表框、組合框或下拉列表框中的列,該列綁定到控件的 控件來源 屬性所指定的字段。)組合框,則您可能不希望使用上面所示的 Form_Load 過程,因為每次加載窗體,它都將重新設(shè)置 Category。您可以刪除該代碼或使用如下所示的過程: Private Sub Form_Load(Cancel As Integer) If IsNull(Category) The
22、n Call Category_AfterUpdate End IfEnd Sub該版本僅在類別為空時才重新設(shè)置類別。有關(guān)如何在窗體的 Load 事件中輸入代碼的詳細分步說明,請參閱下面的擴展部分。分步說明:如何在打開窗體時運行的 Load 事件中輸入代碼要創(chuàng)建代碼,請執(zhí)行下列步驟:在“設(shè)計”視圖中打開窗體 1. 在“數(shù)據(jù)庫”窗口中的“對象”下,單擊“窗體”。2. 單擊某個窗體,然后單擊“數(shù)據(jù)庫”窗口中的“設(shè)計”。編輯 Form_Load 過程 1. 在“編輯”菜單上,單擊“選擇窗體”。2. 在“視圖”
23、菜單上,單擊“屬性”,然后單擊“事件”選項卡。3. 單擊“加載”框,然后單擊出現(xiàn)的省略號按鈕 (.)。4. 當“選擇生成器”對話框出現(xiàn)時,單擊“代碼生成器”,然后單擊“確定”。5. 在 Visual Basic 編輯器 (Visual Basic 編輯器:一種環(huán)境,用于編寫新的 Visual Basic for Applications 代碼和過程,并編輯已有的代碼和過程。Visual Basic 編輯器包括完整的調(diào)試工具集,用于查找代碼中的語法、運行時和邏輯問題。)中輸入代碼,以便 Form_Load 過程與上一個示例所示完全相同。6. 完成后,在“文件”菜單上,單擊“保存”。然后,在“文件
24、”菜單上,單擊“關(guān)閉并返回到 Microsoft Office Access”。7. 關(guān)閉屬性表。8. 關(guān)閉該窗體。如何處理記錄導(dǎo)航 如果使用綁定組合框,則仍可以使用此處所示的方法,但是需要考慮由于用戶在記錄之間導(dǎo)航而導(dǎo)致當前記錄更改時,您希望出現(xiàn)什么情況。在這種情況下,每當在記錄之間導(dǎo)航時,可能需要重新查詢第二個組合框。實現(xiàn)該操作的合適位置是在窗體的 Current 事件中,使用如以下示例所示的代碼。Private Sub Form_Current()End Sub有關(guān)如何在窗體的 Current 事件中輸入代碼的詳細分步說明,請參閱下面的擴展部分。分步說明:如何在當您在記錄之間導(dǎo)航時運行的窗體的 Current 事件中輸入代碼要創(chuàng)建代碼,請執(zhí)行下列步驟:在“設(shè)計”視圖中打開窗體 1. 在“數(shù)據(jù)庫”窗口中的“對象”下,單擊“窗體”。2. 單擊某個窗體,然后單擊“數(shù)據(jù)庫”窗口中的“設(shè)計”。編輯 Form_Current 過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人二手房交易標準協(xié)議模板2024版版B版
- 個人彩鋼瓦安裝安全協(xié)議
- 二零二五版廢舊鋼材拆解、環(huán)保達標與資源化利用合同樣本9篇
- 時間管理在小學生日常生活中的運用
- 個人協(xié)議合同(2024版)
- 智能辦公技術(shù)的普及對現(xiàn)代辦公園區(qū)的改變研究報告
- 心理教育課程設(shè)計及實施技巧
- 2024童鞋電商渠道拓展與銷售合作協(xié)議3篇
- 二零二五年租賃合同(不含房屋租賃)
- 游戲化教學在科技教育中的實踐與探索
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 光伏工程施工組織設(shè)計
- DB4101-T 121-2024 類家庭社會工作服務(wù)規(guī)范
- 化學纖維的鑒別與測試方法考核試卷
- 安慶時聯(lián)新材料有限責任公司10000噸年抗氧劑系列產(chǎn)品及抗紫外線吸收劑生產(chǎn)項目環(huán)境影響報告
- 中醫(yī)師承申請表
- 臨床微生物檢查課件 第2章細菌的生理
- 作品著作權(quán)獨家授權(quán)協(xié)議(部分授權(quán))
評論
0/150
提交評論