周杰
摘 要:主子窗體是窗體中一種較為復雜的窗體。該文對主子窗體的類型和設計方法進行了歸納和總結,使得學生可以輕松掌握主子窗體的設計,實踐證明教學效果良好。
關鍵詞:源對象;鏈接主字段;鏈接子字段
主子窗體是指一個窗體包含另一個窗體,包含其他窗體的窗體稱為主窗體,被包含的窗體稱為子窗體。子窗體可以再包含子窗體,構成多級主子窗體結構。主子窗體通常用于顯示多個表或查詢中的相關聯數據,通過改變主窗體中的關鍵字段值,或通過在主窗體中輸入查詢信息,在子窗體中自動查找并顯示與主窗體關鍵字相關聯的記錄。主子窗體是通過子窗體子報表控件實現的,其中子窗體子報表控件的“源對象”屬性用于設置子窗體中顯示的內容。在“主子窗體設計”的教學過程中,我們發現學生對于什么情況下需要使用主子窗體,以及不同類型的主子窗體之間如何實現相互聯動,往往難于掌握。
一、我們在講解主子窗體時,首先對主子窗體的應用范圍進行了分類,再分別針對每種類型設計相應的實現,起到了良好的教學效果。
(一)主子窗體的類型根據主子窗體的應用情況和聯動方式,我們將其歸納為三種基本類型?;谥鞅砗妥颖淼闹髯哟绑w,基于主表和子表的主子窗體(所謂基于主表和子表的主子窗體,是指主窗體的記錄源是一個表或查詢,子窗體的記錄源是與主窗體記錄源相關聯的另一個表或查詢)?;诓樵兊闹髯哟绑w主要用于查詢程序設計。主窗體中包含用于輸入查詢關鍵字的文本框和組合框等控件,用戶在主窗體中輸入要查找的關鍵字,子窗體自動查找并顯示相應的信息。
(二)無關聯的主子窗體在這種主子窗體中,主窗體通常作為一個容器。用來放置兩個或多個子窗體控件。主子窗體之間無相互關聯關系,僅僅是為了在同一界面中顯示出來。
二、主子窗體的設計
主子窗體的設計在中,提供了多種方法實現主子窗體,既可以使用窗體向導同時創建主窗體和基于查詢的主子窗體子窗體,也可以分別設計主窗體和子窗體后,再將子窗體插入主窗體;在窗體設計視圖和數據庫窗將數據庫窗中的表、查詢、窗本實體等對象拖到設計視圖,也可以快速創建主子窗體。
(一)基于主表和子表的主子窗體設計基于主表和子表的主子窗體是一種最為常見的主子窗體,在主窗體和子窗體中的控件通常應是綁定型控件,用來表示相應表中的字段內容,其主窗體內容和子窗體內容的聯動,需要通過子窗體子報表控件的“鏈接主字段”和“鏈接子字段”屬性實現。在講解該類主子窗體時,我們主要通過的窗體向導來實現。重點講解以下幾點:①在啟動窗體向導之前,必須建立主表和子表間的聯系,其中主表作為主窗體的數據源,子表作為子窗體的數據源。②在向導創建過程中,出現“確定查看數據的方式”時,必須選擇通過主表(表關系的一方)查看數據,否則創建的將不是主子窗體。而是單一窗體。③子窗體子報表控件的“鏈接主字段”和“鏈接予字段”屬性是實現該類主子窗體聯動的關鍵屬性,兩屬性值應分別是實現主表和子表間聯系的對應字段。在主窗體和子窗體中,可以不包含顯示該字段的控件,而僅僅用其實現主窗體和子窗體的聯動。
(二)基于查詢的主子窗體設計基于查詢的主子窗體主要用于查詢程序設計,實現較為復雜,不能使用窗體向導。在講解該類主子窗體時,我們采用分別設計主窗體和子窗體的方法,在兩個窗體均創建完成后,在主窗體設計視圖中添加一個子窗體,子報表控件,設置該控件的“源對象”屬性為剛創建的子窗體。實際創建時,可以直接將子窗體拖動到主窗體中。系統會自動添加一個子窗體子報表控件,并自動設置該控件的“源對象”屬性.我們使用前一種方法主要為加強學生對子窗體,子報表控件和“源對象”屬性的理解。在基于查詢的主子窗體設計中。需要注意以下幾點:①主窗體中的控件通常是非綁定型控件,用于輸入或選擇要查找的關鍵信息;子窗體中的控件通常為綁定型控件,根據主窗體中輸入的信息,顯示查找到的表中字段內容。②在基于查詢的主子窗體中。主窗體和子窗體的聯動不通過子窗體子報表控件的“鏈接主字段”和“鏈接子字段”實現,因此這兩個屬性無需設置。為了實現這種主子窗體的聯動,在設計子窗體時,應將子窗體的“記錄源”屬性設置為一個參數查詢,其中參數名稱應與主窗體中輸入查找信息的控件名稱一致。③用于實現聯動的字段可以不在子窗體中顯示,而僅僅作為查詢條件。
(三)無關聯的主子窗體無關聯的主子窗體設計較為簡單,講解時,我們采用分別設計各個窗體,然后將設計好的子窗體直接從數據庫窗拖動到主窗體設計視圖中。
三、結束語
通過對主子窗體類型進行歸納分類,并針對每類主子窗體分別采用不同的設計方法進行實現,不僅使學生掌握了創建主子窗體的各種方法,而且對主子窗體的聯動方式有了較深的理解,通過教學實踐證明,取得了良好的教學效果。
參考文獻:
[1]盧湘鴻,陳潔.數據庫與程序設計.北京:電子工業出版社,2009:138.
[2]申石磊,楚艷萍.程序設計.北京:中國科學技術出版社,2009:130.