使用DataCombo和DataList控件
DataCombo和DataList控件與標(biāo)準(zhǔn)列表框和組合框控件極為相似,但有一些重要的不同之處,這種不同使這兩個(gè)控件在數(shù)據(jù)庫(kù)應(yīng)用程序中具有極大的適應(yīng)性和用武之地。這兩個(gè)控件都可以被這些控件所綁定的數(shù)據(jù)庫(kù)字段自動(dòng)填充。此外,它們還能有選擇地將一個(gè)選定的字段傳遞給第二個(gè)數(shù)據(jù)控件,從而適合用于創(chuàng)建“查找表”應(yīng)用程序。
可能的用法
1.在一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,使用一個(gè)表的數(shù)據(jù)來(lái)提供要輸入給第二個(gè)(相關(guān)的)表值。例如,在一個(gè)存貨清單數(shù)據(jù)庫(kù)中,供應(yīng)商的名稱存儲(chǔ)在一個(gè)表中,每個(gè)供應(yīng)商都有一個(gè)唯一的標(biāo)識(shí)符。另一個(gè)顯示產(chǎn)品的表則使用這些標(biāo)識(shí)符來(lái)表明是哪個(gè)供應(yīng)商供應(yīng)的該產(chǎn)品。可以使用DataList控件來(lái)顯示供應(yīng)商的名稱,而(不可見(jiàn)地)將供應(yīng)商的標(biāo)識(shí)符提供給產(chǎn)品表。
2.允許用戶通過(guò)從一個(gè)下拉列表中選擇一種標(biāo)準(zhǔn)來(lái)縮小搜索范圍。例如,一個(gè)銷售報(bào)告的數(shù)據(jù)庫(kù)應(yīng)用程序可以使用一個(gè)DataList控件讓用戶選擇一個(gè)州(State)或一個(gè)銷售區(qū)域。一旦作出選擇,則該選擇項(xiàng)將自動(dòng)傳遞給第二個(gè)數(shù)據(jù)控件,這個(gè)控件負(fù)責(zé)查找選定區(qū)域的銷售記錄。
與它們對(duì)應(yīng)的內(nèi)在控件一樣,DataList和DataCombo控件之間的主要不同在于DataCombo控件提供了一個(gè)可以在其中編輯內(nèi)容的文本框。
詳細(xì)信息有關(guān)DataList和DataCombo控件連接數(shù)據(jù)庫(kù)表能力的說(shuō)明,請(qǐng)參閱“使用DataCombo和DataList控件連接兩個(gè)表”。要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的使用鏈接表的數(shù)據(jù)庫(kù)應(yīng)用程序,請(qǐng)參閱“創(chuàng)建一個(gè)簡(jiǎn)單的DataCombo應(yīng)用程序”。
值得注意的控件屬性
DataList和DataCombo控件的一些重要屬性包括:
注意DataCombo控件的DataFormat屬性是一個(gè)Extender屬性。因此在屬性表上它總是可見(jiàn)的,并且可以在代碼中設(shè)置。然而,DataCombo控件僅對(duì)其列表中最上端的項(xiàng)格式化。對(duì)于看到已格式化的頂端項(xiàng)的最終用戶來(lái)說(shuō),這一點(diǎn)可能不太重要,只要從未格式化的列表中選擇即可。已格式化的項(xiàng)可能也會(huì)誤導(dǎo)最終用戶,使他們以為項(xiàng)目要在格式化之后再輸入數(shù)據(jù)庫(kù)。由于這些原因,建議在使用DataCombo控件時(shí)不要設(shè)置DataFormat屬性。
詳細(xì)信息如果要使用一個(gè)演示BoundText屬性用法的循序漸進(jìn)教程,請(qǐng)參閱“創(chuàng)建一個(gè)連接DataList控件的DataGrid”。關(guān)于這些控件的屬性和方法的完整列表,請(qǐng)參閱“DataList控件”和“DataCombo控件”。
使用DataCombo和DataList控件連接兩個(gè)表
DataCombo和DataList控件與眾不同的特性是具有訪問(wèn)兩個(gè)不同的表,并且將第一個(gè)表的數(shù)據(jù)鏈接到第二個(gè)表的某個(gè)字段的能力。這是通過(guò)使用兩個(gè)數(shù)據(jù)源完成的(諸如ADOData控件或Data環(huán)境)。
關(guān)系表和“不友好的”值
在一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,對(duì)于重復(fù)使用的信息并不是在多個(gè)地方都保存其全部的信息。大多數(shù)這種信息都保存在由多個(gè)字段組成的一個(gè)記錄集中;在這些字段中有一個(gè)“標(biāo)識(shí)符”字段來(lái)唯一地標(biāo)識(shí)這個(gè)記錄集。例如,VisualBasic提供的Biblio數(shù)據(jù)庫(kù)在一個(gè)名為"Publishers"的表中存儲(chǔ)了若干個(gè)出版公司的名稱。這個(gè)表包括很多字段,諸如地址、城市、郵政編碼以及電話號(hào)碼等。但是為了簡(jiǎn)單起見(jiàn),只考慮這個(gè)表的兩個(gè)本質(zhì)字段Name和PubID字段。Name字段存儲(chǔ)一個(gè)出版商的名稱,而PubID字段則存儲(chǔ)一個(gè)相對(duì)“不友好的”值,如一個(gè)數(shù)或代碼。但這個(gè)不友好的值是很重要的,因?yàn)檫@個(gè)值唯一地標(biāo)識(shí)該出版商,并且可以作為一種鏈接整個(gè)記錄集的手段。此外,這個(gè)值會(huì)存儲(chǔ)在第二個(gè)表中的多個(gè)記錄集中。
第二個(gè)表的名稱為"Titles",其每個(gè)記錄集包含的信息包括標(biāo)題、出版年份、國(guó)際標(biāo)準(zhǔn)書號(hào)ISBN等。在這些字段中有一個(gè)字段的名稱就是"PubID"。這個(gè)字段的名稱與Publishers表中的相應(yīng)字段的名稱相同,因?yàn)檫@個(gè)字段存儲(chǔ)了將該標(biāo)題和一個(gè)特定的出版商鏈接在一起的值。
這種可行方案提出了一個(gè)小問(wèn)題:給定一個(gè)允許用戶插入新標(biāo)題的數(shù)據(jù)庫(kù)應(yīng)用程序,用戶必須用某種方法輸入標(biāo)識(shí)出版商的整數(shù)。如果用戶能記住每個(gè)出版商的唯一標(biāo)識(shí)符,那么也還是可行的,不過(guò)如果一方面用戶能看到出版商的名稱,另一方面存入應(yīng)用程序的又是數(shù)據(jù)庫(kù)中相應(yīng)的值,則會(huì)顯得更加方便。而DataList和DataCombo控件就可以輕松地解決這個(gè)問(wèn)題。
兩個(gè)數(shù)據(jù)源、三個(gè)字段、無(wú)編碼
DataList和DataCombo控件使用兩個(gè)數(shù)據(jù)源來(lái)解決這個(gè)問(wèn)題。在只顯示出版商的名稱(來(lái)自Publishers表)的同時(shí),DataList或DataCombo控件只將PubID字段的值寫入到Titles表。通過(guò)“屬性”窗口,將RowSource設(shè)置為提供要寫入的數(shù)據(jù)的數(shù)據(jù)源(即Publishers表)。然后將DataSource屬性設(shè)置為要寫入數(shù)據(jù)的數(shù)據(jù)源(即Titles表)。最后,設(shè)置DataField、ListField以及BoundColumn屬性。下圖演示了如何將兩個(gè)數(shù)據(jù)源(以兩個(gè)Data控件的形式)以及三個(gè)字段指定給一個(gè)DataCombo控件:
簡(jiǎn)要而言,ListField屬性決定該控件所顯示的是哪一個(gè)字段。在本例中就是出版商的名稱。另一方面,BoundColumn屬性則決定Publishers表中由哪一個(gè)字段向Title表供應(yīng)實(shí)際所需的值。注意Publishers表中的PubID字段不能(也不應(yīng)該)被編輯。相反,在PubID字段中的值將寫入到由DataField屬性所指定的字段。在本例中,這個(gè)屬性就是Titles表中的PubID字段。
下表概要地介紹這些屬性及其使用方法。
注意DataList和DataCombo控件也可以與單個(gè)數(shù)據(jù)控件一起使用。要實(shí)現(xiàn)這一點(diǎn),可以將DataSource和RowSource屬性設(shè)置為同一個(gè)數(shù)據(jù)控件,并且將DataField和BoundColumn屬性設(shè)置為該數(shù)據(jù)控件的記錄集中的同一個(gè)字段。在這種情形下,將使用ListField的值來(lái)填充該列表,且這些值來(lái)自于被更新的同一個(gè)記錄集。如果指定了一個(gè)ListField屬性,但沒(méi)有設(shè)置BoundColumn屬性,則BoundColumn將自動(dòng)被設(shè)置為L(zhǎng)istField字段。
詳細(xì)信息如果想使用DataCombo控件循序漸進(jìn)地創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用程序,請(qǐng)參閱“創(chuàng)建一個(gè)簡(jiǎn)單的DataCombo應(yīng)用程序”。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注