張園園
(山西省大同市大同煤炭職業(yè)技術(shù)學(xué)院,山西大同037003)
我們在設(shè)計某些信息管理系統(tǒng)時經(jīng)常遇到需要處理圖片的情況。如圖1所示的一個學(xué)生信息管理系統(tǒng)的界面中,我們希望把每名學(xué)生的照片放在窗體上,使界面更加生動、信息更加全面。同樣,在進(jìn)行報名信息管理時,我們也希望在界面上能看到考生的照片,方便考生進(jìn)行信息核對。諸如此類圖片的處理一直都是比較復(fù)雜的,尤其是對于初學(xué)者。
圖1 學(xué)生管理
在數(shù)據(jù)庫中,圖片的特殊性有兩點:1、圖片所占存儲空間常常是比較大的;2、圖片的處理常常需要外部的程序。編寫代碼對于初學(xué)者有一定難度。
我們常用ACCESS來設(shè)計一般的小型數(shù)據(jù)庫。在ACCESS中,備注數(shù)據(jù)類型可以存儲最多65,535個字符,而OLE對象數(shù)據(jù)類型可以存儲最多1 G字節(jié)的鏈接或嵌入的對象(例如Microsoft Excel電子表格、Microsoft Word文檔、圖形、聲音或其它二進(jìn)制數(shù)據(jù))。因為圖片的大小常超出備注數(shù)據(jù)類型的限制,且用OLE類型更方便,所以我們利用ACCESS數(shù)據(jù)庫中的OLE數(shù)據(jù)類型存儲圖片,在VB程序中用OLE控件處理圖片。但是由于OLE對象不能支持ADO和OLEDB,我們要用DAO來連接數(shù)據(jù),處理起來不方便。
下面介紹一種在VB程序中處理ACCESS數(shù)據(jù)庫中處理圖片的辦法。準(zhǔn)確地說圖片沒有真正放在ACCESS數(shù)據(jù)庫,巧妙在于筆者是把圖片文件的文件名以字符型數(shù)據(jù)存放在數(shù)據(jù)庫中。同樣可以實現(xiàn)如圖1所示添加記錄中的圖片,還可以更改原有照片。
VB前臺用戶界面與后臺數(shù)據(jù)庫的連接采用方便、靈活、性能更優(yōu)的ADO控件。
具體方法如下:
在設(shè)計數(shù)據(jù)庫時除如圖2所示的平常字段外,還需添加名稱為“zaop”的字段來存放圖片文件名的信息。字段的類型用文本型。這是問題的關(guān)鍵,“zaop”的字段必需為文本型,而不是OLE對象。
圖2 學(xué)生表
第一步:加入部件
在“工程”菜單的“部件”選項卡的“控件”列表中找到Microsoft ADO Data Control 6.0,單擊左端的復(fù)選框,使之顯示對號√,然后單擊“確定”鈕,完成添加。同時在工具箱可見ADO控件。
第二步:添加控件、改變屬性
為窗體添加ADO控件,默認(rèn)名稱為Adodc1。并連接數(shù)據(jù)庫文件和表。
這里要注意的是:如圖3所示,連接到數(shù)據(jù)庫后要刪除數(shù)據(jù)庫前面的路徑,只留下數(shù)據(jù)庫文件名。而且數(shù)據(jù)庫文件要與工程文件放在同一目錄中。
圖3 連接數(shù)據(jù)庫
第三步:將窗體上有關(guān)的文本框綁定到ADODC控件上
對除命令按鈕和圖像框的其它對象設(shè)置如下兩個屬性值:
DataSource:數(shù)據(jù)源就是ADODC控件;
Datafield:數(shù)據(jù)字段就是表的字段,此處選擇你該使用的字段。
第四步:在代碼中使用ADODC控件對象的屬性和方法
主要是調(diào)動其Recordset記錄集對象的屬性、方法等來實現(xiàn)按鈕的功能。這里要討論的是“添加或更換照片”這個按鈕功能的實現(xiàn),其它的不再贅述。
(1)首先在窗體上需要添加一個通用對話框:“MicroSoft Common Dialog Control 6.0”。
(2)編寫“添加或更換照片”按鈕的功能,這是本程序的最關(guān)鍵的地方,代碼如下:
lj=App.Path'對工程所在路徑賦值給變量
Cd2.ShowOpen'通用對話框執(zhí)行打開方法選取準(zhǔn)備添加或更改的圖片文件
ff=Cd2.FileName'把上面通用對話框所選取的圖片文件保存在變量中,注意此時保存的文件的絕對路徑
zaopian=Mid(ff,Len(App.Path)+2,Len(ff)-Len(App.Path))'利用函數(shù)截取所選取的圖片文件的文件名部分
student.Recordset.Fields("zaop").Value=zaopian'把圖片文件名寫入到數(shù)據(jù)庫存放圖片字段名的字段zaop中
student.Recordset.Update
ChDrive App.Path'設(shè)當(dāng)前驅(qū)動器為工程所在驅(qū)動器
ChDir App.Path'設(shè)當(dāng)前目錄為工程所在目錄
Image1.Picture=LoadPicture(zaopian)
(3)在瀏覽數(shù)據(jù)庫的記錄的各按鈕上實現(xiàn)照片的顯示功能,以“下一條”按鈕為例,代碼如下:
在設(shè)計程序時可以把所有學(xué)生的照片文件存放在工程所在目錄的一個子目錄中如“PIC”,這樣管理起來比較方便。以上是筆者對數(shù)據(jù)庫中的圖片處理摸索的另一種途徑,希望能對有需要的VB的初學(xué)者以及本課程的教師有所幫助。