[摘要]在開(kāi)放教育的考試中,有時(shí)需要臨時(shí)打印帶有相片的考生資格審批表,但目前的教務(wù)管理系統(tǒng)尚不具備這個(gè)功能。本文采用Access報(bào)表,并利用VBA編程的方法,實(shí)現(xiàn)了這個(gè)功能,有一定的實(shí)用價(jià)值。
[關(guān)鍵詞]Access VBA 報(bào)表 FileSystemObject
一、引言
1999年開(kāi)始,從中央電大到省級(jí)電大、地市分校,全國(guó)電大系統(tǒng)均使用電大教務(wù)管理信息系統(tǒng)平臺(tái),從計(jì)劃制定、招生注冊(cè)、學(xué)籍管理、考試組織到學(xué)生畢業(yè),全部實(shí)現(xiàn)計(jì)算機(jī)管理。電大教務(wù)管理信息系統(tǒng)在電大各級(jí)教務(wù)管理和其它起到了重要作用,但在數(shù)據(jù)報(bào)表功能上存在不足,如不能進(jìn)行大量定制數(shù)據(jù)統(tǒng)計(jì)匯總,不能將照片信息與學(xué)生數(shù)據(jù)進(jìn)行關(guān)聯(lián)實(shí)現(xiàn)報(bào)表打印等,而使用Access的數(shù)據(jù)處理功能和報(bào)表的輸出正好能夠彌補(bǔ)這一缺陷,完善電大教務(wù)管理信息系統(tǒng)的數(shù)據(jù)處理能力。
Access是Office辦公系列軟件之一,是一個(gè)功能十分強(qiáng)大而易于使用的動(dòng)態(tài)數(shù)據(jù)處理工具。其中Access的報(bào)表是用于快速顯示大量數(shù)據(jù)的交互式工具,還可以根據(jù)需要進(jìn)行篩選,非常便于用戶重新組織和統(tǒng)計(jì)數(shù)據(jù)。VBA是一種自動(dòng)化語(yǔ)言,它可以使常用的程序自動(dòng)化,可以創(chuàng)建自定義的解決方案。
二、帶相片考生資格審批表打印的實(shí)現(xiàn)
應(yīng)用對(duì)Access報(bào)表的VBA編程實(shí)現(xiàn)帶相片考生資格審批表批量打印,需要如下幾個(gè)步驟。
1.從中央電大教務(wù)管理系統(tǒng)提取出基本的學(xué)生報(bào)考數(shù)據(jù)
教務(wù)管理信息系統(tǒng)數(shù)據(jù)庫(kù)中的bkbpdfb表為我們提供了進(jìn)行上述功能的基本數(shù)據(jù),我們通過(guò)教務(wù)管理的數(shù)據(jù)接口可以將需要的學(xué)生報(bào)考數(shù)據(jù)進(jìn)行導(dǎo)出,并添加1個(gè)字段來(lái)專(zhuān)門(mén)存放當(dāng)前照片所對(duì)應(yīng)的JPG文件的目錄和照片的名稱(chēng),在這里我們將照片以獨(dú)立文件的形式存放,減少數(shù)據(jù)庫(kù)所占用的存儲(chǔ)空間。添加一個(gè)名為照片路徑的字段,類(lèi)型為文本型。
字段名稱(chēng)類(lèi)型照片路徑文本登錄“CRTVU中央電大教務(wù)管理系統(tǒng)”,選擇【考務(wù)管理】中的【考場(chǎng)編排查詢(xún)】,選擇一種學(xué)生類(lèi)型代碼,如“開(kāi)放本科教育”,單擊打印按鈕,在出現(xiàn)的對(duì)話框中選擇【考試通知單】,在起開(kāi)學(xué)號(hào)中輸入000000000,終止學(xué)號(hào)中輸入999999999,選擇工具欄中【生成其他形式文件】按鈕,進(jìn)行數(shù)據(jù)導(dǎo)出,類(lèi)型選擇Excel with headers,名字為“補(bǔ)辦審批表”,單擊【保存】按鈕,將導(dǎo)出的文件存到指定目錄下。
2.制作Access報(bào)表
在Access中選擇【對(duì)象】工具欄,在【表】單擊右鍵選擇【導(dǎo)入】按鈕,在類(lèi)型選擇*.XLS,文件名為剛從“CRTVU中央電大教務(wù)管理系統(tǒng)”中導(dǎo)出的“補(bǔ)辦審批表”。
基本數(shù)據(jù)到位后,開(kāi)始具體的報(bào)表制作。選擇【對(duì)象】工具欄,在【窗體】點(diǎn)擊新件窗體取名為“按學(xué)生打印”,在新建的窗體中添加一個(gè)文本框控件,該控件名稱(chēng)取為學(xué)號(hào),并添加一個(gè)命令按鈕,直接指向需要顯示的報(bào)表“補(bǔ)辦考生資格審批表”。
選擇【對(duì)象】工具欄,在【報(bào)表】點(diǎn)擊新建報(bào)表,選擇報(bào)表的【記錄源】寫(xiě)入如下代碼。
SELECT 補(bǔ)辦審批表.*
FROM 補(bǔ)辦審批表
WHERE (((補(bǔ)辦審批表.學(xué)號(hào))=Trim([Forms]![按學(xué)生打印]![學(xué)號(hào)])));
Trim([Forms]![按學(xué)生打印]![學(xué)號(hào)])表示去除左右空格,來(lái)源為“按學(xué)生打印”窗體的“學(xué)號(hào)”文本框的內(nèi)容。
報(bào)表的具體設(shè)計(jì),選擇【排序與分組】,排序具體添加順序?yàn)椋劝窗嗵?hào)、在按學(xué)號(hào)、日、時(shí)、試卷號(hào),并在【排序與分組】學(xué)號(hào)字段的【組頁(yè)眉】、【組頁(yè)腳】選擇“是”,表示按照學(xué)號(hào)進(jìn)行分組,并將月、日、時(shí)、分、等字段添加到【主體】部分,表示這部分字段是按照每個(gè)學(xué)號(hào)進(jìn)行顯示。
3.編寫(xiě)VBA代碼實(shí)現(xiàn)照片讀取
為了能隨學(xué)號(hào)的改變顯示不同的照片,可以通過(guò)添加Access報(bào)表的Image控件來(lái)實(shí)現(xiàn),可以先將一個(gè)Image控件添加到報(bào)表的學(xué)號(hào)頁(yè)腳部分,將該控件圖片指向一張照片。操作方法:選擇【工具】菜單,在【宏】點(diǎn)擊鼠標(biāo)左鍵,選擇【Visual Basic 編輯器】菜單,彈出Visual Basic編輯器,選擇該報(bào)表主體的Format加載事件。在事件代碼中,通過(guò)FSO文件系統(tǒng)進(jìn)行判斷,看是否存在照片信息與數(shù)據(jù)庫(kù)中的信息相匹配,并進(jìn)行糾錯(cuò)處理,使用CurrentProject.Path來(lái)獲取當(dāng)前文件的相對(duì)路徑。
添加如下代碼:
Function ExistsFile_UseFso(strPath As String) As Boolean
Dim fso
Set fso = CreateObject(\"Scripting.FileSystemObject\")
ExistsFile_UseFso = fso.FileExists(strPath)
Set fso = Nothing
End Function
Private Sub 主體_Format(Cancel As Integer, FormatCount As Integer)
'照片
Dim strPic_old As String
On Error Resume Next
strPic_old = CurrentProject.Path \"\\\\\" Nz(照片old.Value, \"\") '處理為照片為空的情況
If ExistsFile_UseFso(strPic_old) = True Then'判斷照片是否存在
On Error Resume Next
照片顯示old.Picture = strPic_old
If 照片顯示old.Picture <> strPic_old Then'判斷是否為能解析的照片
照片顯示old.Visible = False
照片未找到old.Visible = True
Else
照片顯示old.Visible = True
照片未找到old.Visible = False
End If
Else
照片顯示old.Visible = False
照片未找到old.Visible = True
End IfEnd Sub
三、結(jié)束語(yǔ)
從上面可以看到,Access的報(bào)表功能強(qiáng)大、操作簡(jiǎn)單易用,將電大教務(wù)管理信息系統(tǒng)和Access報(bào)表結(jié)合起來(lái),通過(guò)VBA編程,可以解決許多特殊的技術(shù)問(wèn)題,能夠提高我們的數(shù)據(jù)處理能力和工作效率。
參考文獻(xiàn):
[1]時(shí)曉龍.數(shù)據(jù)庫(kù)應(yīng)用技術(shù)Access[M].上海:上??茖W(xué)普及出版社, 2005.
[2]王玲玲. Access2003基礎(chǔ)培訓(xùn)百例[M].北京:機(jī)械工業(yè)出版社, 2006.
[3]陳可欣. Access VBA數(shù)據(jù)庫(kù)高效開(kāi)發(fā)范例應(yīng)用[M].北京:中國(guó)青年出版社, 2005.
(作者單位:陜西廣播電視大學(xué);湖南長(zhǎng)沙廣播電視大學(xué))