數據庫中的數據要最終顯示給用戶,就要使用數據約束控件,比如前面所使用的文本框以及VB所提供的其他普通約束數據控件,VB中還提供了多種高級約束數據控件,其中包括:高級約束數據網格控件(DBGrid)、高級約束列表控件(DBList)和高級約束組合框控件(DBCombo)。在默認的工具箱中,尚未加入這些控件,要使用它們,首先要先引用它們:右鍵點擊工具箱選擇“部件”,點擊“MicrosoftDataBoundGridControl”復選框來加入網格控件,點擊“MicrosoftDataBoundListControls5.0”加入列表控件和組合框控件。
高級約束數據網格控件(DBGrid)
高級約束數據網格控件顯示並允許操作與其相連的記錄集對象,DBGrid控件被稱為“數據感知”的,即只要將其DataSource屬性設置為Data控件(當然Data控件的DatabaseName和RecordSourse屬性必須已經被正確設置)就能利用記錄集來自動填充控件的網格,並且列頭也由記錄集對象自動設置。
換句話說,就是通過DBGrid控件所顯示的二維網格,實際上可以形象地看到整個記錄集的結構和內容。可以在代碼中指定當前單元,或用戶在運行時用鼠標或單元箭頭鍵改變當前單元,然後進行單元內容的修改,單元可以單獨或按行選中。用DBGrid控件的列Columns集合的Count屬性和Recordset對象的RecordCount屬性可以確定控件中的行和列的數目。
約束數據列表控件(DBList)與
約束數據組合框控件(DBCombo)
DBList與DBCombo控件是和數據相連的控件,它們能在列表中自動顯示與之相連的Data控件的字段值,並可以有選擇地更新其它的Data控件中相關表的字段。DBList和DBCombo控件的列表是通過簡單地設置一些屬性由和它們相連的Data控件的Recordset對象中的字段中的數據自動填加數據項,並且控件有能力更新在不同的Data控件的相關的Recordset對象中的字段,即用一個記錄集中的某個字段值去更新另一個記錄集中指定的一個字段的值。
DBList與DBCombo常用的屬性:
·RowSource:作為控件列表區段的項目源使用的一個Data控件名,即用所指定的數據控件中的一個字段內容來填充列表控件的列表區;
·ListField:由RowSource指定的Data控件創建的Recordset中的一個字段名,用於填充列表;
·SelectedItem:由RowSource屬性指定的在Recordset中的選定項目的書簽(即選定的字段項目所在的記錄)。
舉例如下:在列表中選定一個人名,則在其它的幾個文本框中就顯示這個人的所有完整的信息。
開始一個新的工程,在窗體上放置一個Data控件,把它的DatabaseName設為“c:myfile.mdb”,RecordSource設置為“Phone”表;一個DBList控件,把RowSource設置為Data1,ListField設置為“姓名”;三個Text控件,把DataSource都設置為Data1,DataField分別為“姓名”、“電話”、“地址”。現在我們運行程序,就會看到第一條記錄中的完整信息,但點擊列表來選擇其他的項目時則不會發生任何變化,這是因為沒有指明列表框控件如何響應Click事件,導致Data不能重定位到記錄集中與所點擊項目匹配的新的記錄,因此要在列表控件的Click事件中加入如下代碼:
Data1.RecordSet.Bookmark=DBList1.SelectedItem
Bookmark屬性標識記錄集中的一行,通過設置這個屬性,使Data控件重新定位到特定的行。控件的SelectedItem屬性不是控件編輯框中顯示的文本,而是所選字段所屬的記錄書簽,這個代碼使記錄集中的Data控件重新定位,並更新窗體上的文本框約束數據控件。->