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