摘要:本文主要講述了使用DBGird等ActiveX控件來(lái)顯示Access數(shù)據(jù)庫(kù)記錄數(shù)據(jù)的一般方法。
關(guān)鍵字:DBGird控件、ActiveX、Access數(shù)據(jù)庫(kù)
一、 引言 隨著數(shù)據(jù)庫(kù)技術(shù)的進(jìn)一步發(fā)展,我們?cè)谏睢⑥k公時(shí)越來(lái)越多地同各式各樣的數(shù)據(jù)庫(kù)前臺(tái)程序打著交道,這就要求數(shù)據(jù)庫(kù)前臺(tái)程序必須擁有良好的人機(jī)界面,使用戶能有一種好的心情方便的同程序進(jìn)行交互。Microsoft 的Office系列產(chǎn)品之所以能得到廣泛的認(rèn)同,也是與其良好的人機(jī)界面分不開(kāi)的。數(shù)據(jù)庫(kù)最基本的單位--表包含有若干條數(shù)據(jù)記錄,而每一條記錄又包含有許多的字段,如何能方便、美觀的將這些數(shù)據(jù)記錄顯示給用戶,并能方便實(shí)用的同用戶進(jìn)行交互操作便成為一個(gè)程序能否為人接受的重要因素了。Microsoft的Access 97/2000在這方面就做的相當(dāng)不錯(cuò),用一個(gè)網(wǎng)格式表單容納了表中所有的數(shù)據(jù),顯得清晰簡(jiǎn)潔。而我們?cè)谟肰isual C++開(kāi)發(fā)的數(shù)據(jù)庫(kù)前臺(tái)程序中如要實(shí)現(xiàn)類(lèi)似的表格就不得不借助于提供的ActiveX控件--DBGrid Control來(lái)實(shí)現(xiàn),因?yàn)樽约褐匦麻_(kāi)發(fā)類(lèi)似的功能無(wú)疑是比較困難而又煩瑣的。本文著重對(duì)該控件的使用做了介紹。
二、 程序的設(shè)計(jì)實(shí)現(xiàn) 本程序采用ODBC接口同Access 2000數(shù)據(jù)源相連,并將數(shù)據(jù)庫(kù)中的記錄數(shù)據(jù)通過(guò)網(wǎng)格的形式顯示給用戶,并能完成同Access表單類(lèi)似的諸如添加記錄、刪除記錄等功能。
在開(kāi)始編制程序之前首先要通過(guò)控制面板的32位ODBC數(shù)據(jù)源設(shè)置我們待操作的后臺(tái)Access數(shù)據(jù)源,建立名稱為"雇員"的系統(tǒng)DSN,并將其指向Employee.mdb。為簡(jiǎn)單計(jì),數(shù)據(jù)庫(kù)中有一個(gè)"雇員表",內(nèi)含5個(gè)字段:"雇員ID
","tb雇員姓名"、"所在部門(mén)","職務(wù)","備注"等,并預(yù)先填充幾條記錄備用。
在用VC創(chuàng)建工程時(shí),需要在第二步確認(rèn)提供了對(duì)ActiveX控件的支持。需要有后臺(tái)數(shù)據(jù)庫(kù)的支持,并通過(guò)"DataSource"按扭選擇剛才注冊(cè)過(guò)的ODBC數(shù)據(jù)源。此時(shí)編譯運(yùn)行程序,通過(guò)工具條上的數(shù)據(jù)庫(kù)導(dǎo)航條可以移動(dòng)數(shù)據(jù)庫(kù)的記錄指針,說(shuō)明此時(shí)已經(jīng)同數(shù)據(jù)庫(kù)建立了連接,但由于沒(méi)有控件(編輯框或其他)同數(shù)據(jù)庫(kù)的字段相棒定,此時(shí)還無(wú)法顯示數(shù)據(jù)庫(kù)中的記錄。我們先插入網(wǎng)格控件DBGrid Control,方法如下:
1)選擇菜單->Project->Add to Project->Components and Controls Gallery
2)在部件選擇對(duì)話框中進(jìn)入Registered ActiveX Controls
3)選擇DBGrid Control,單擊Insert按鈕,確認(rèn)后對(duì)類(lèi)進(jìn)行配置(可以按默認(rèn)),我們不做任何修改單擊OK按鈕,插入完成。
在VC工作區(qū)的ResourceView中可以如同使用標(biāo)準(zhǔn)控件一樣將剛添加來(lái)的DBGird網(wǎng)格控件拖入到對(duì)話框中,并對(duì)其屬性進(jìn)行設(shè)置。下面將主要的屬性列表如下:
屬性名稱 |
值 |
說(shuō)明 |
Caption |
雇員表 |
設(shè)定DBGird控件的網(wǎng)格標(biāo)題 |
AllowAddNew |
True |
是否允許添加記錄 |
AllowDelete |
True |
是否允許刪除記錄 |
AllowDelete |
True |
是否允許更新記錄 |
ColumnHeaders |
True |
是否顯示每列的標(biāo)題 |
DefColWidth |
100 |
設(shè)定每列的寬度 |
RowHeight |
11 |
設(shè)定每行高度 |
DataSource |
<Not bound to a DataSource> |
設(shè)定綁定的數(shù)據(jù)源 |
BackColor |
0x8000000E |
設(shè)定網(wǎng)格的背景色 |
再次運(yùn)行程序,可以看到類(lèi)似Access表格風(fēng)格的DBGird控件以按我們的屬性設(shè)定顯示了出來(lái),但并沒(méi)有數(shù)據(jù)庫(kù)記錄的顯示,而且我們注意到剛才設(shè)定數(shù)據(jù)源屬性DataSource時(shí),下拉選項(xiàng)只有<Not bound to a DataSource>一項(xiàng),而并沒(méi)有我們所希望的ODBC數(shù)據(jù)源"雇員"的存在。所以我們還要繼續(xù)添加一些輔助的控件來(lái)完成同數(shù)據(jù)庫(kù)源的綁定。用同插入DBGird控件一樣的步驟,插入Microsoft RemoteData Control控件,同樣也要對(duì)其屬性進(jìn)行設(shè)置:
屬性名稱 |
值 |
說(shuō)明 |
ID |
IDC_REMOTEDATACTL1 |
控件ID |
Caption |
人事管理系統(tǒng)--雇員表 |
設(shè)定導(dǎo)航條的標(biāo)題 |
UserName |
|
由于沒(méi)有指定用戶及密碼,設(shè)為空 |
Password |
|
同上 |
SQL |
SELECT * FROM |
"雇員表" 待執(zhí)行的SQL結(jié)構(gòu)化查詢語(yǔ)言 |
在RemoteData控件里用SQL語(yǔ)言將ODBC數(shù)據(jù)源的"雇員表"打開(kāi)并選取里面的所有字段,也即顯示表里的所有記錄信息。這時(shí)再打開(kāi)DBGird控件的DataSource屬性就會(huì)發(fā)現(xiàn)下拉條里多了一個(gè)"IDC_REMOTEDATACTL1",正是RemoteData的ID號(hào)。此次編譯運(yùn)行程序就在網(wǎng)格控件內(nèi)顯示了數(shù)據(jù)源指定表的所有記錄信息,而且可以方便的添加、刪除記錄以及調(diào)整字段尺寸等。具體如圖所示:
運(yùn)行結(jié)果表明,在RemoteData控件的中介作用下實(shí)現(xiàn)了DBGird控件同ODBC數(shù)據(jù)源之間的交互。該程序設(shè)計(jì)實(shí)現(xiàn)過(guò)程是可靠、實(shí)用的。
小結(jié):
DBGrid數(shù)據(jù)網(wǎng)格控件以其短小精悍而深受大家的喜愛(ài),,本文將在VC下使用DBGrid的具體步驟和方法作了簡(jiǎn)要地介紹。其它類(lèi)似的表格控件也可以大致參考這個(gè)過(guò)程,希望本文能有所啟迪與幫助。在Windows 2000 Professional下,由Microsoft Visual C++ 6.0編譯測(cè)試通過(guò)。后臺(tái)數(shù)據(jù)源為Microsoft Access 2000。