最近筆者接到一個(gè)任務(wù),要將學(xué)生的證書信息及相片打印到3+1技能證書模板上,并且還要傳到網(wǎng)上供用人單位查詢。原始數(shù)據(jù)分兩部分,一部分是包含學(xué)生姓名、身份證號、認(rèn)證項(xiàng)目、證書編號等信息的Excel表;另一部分是按認(rèn)證項(xiàng)目分類、以學(xué)生姓名為名的相片,圖片大小均為90×120像素,圖片格式均為JPG。
考慮到時(shí)間上的緊迫性,還有用戶操作的易用性,以后上網(wǎng)查詢所需數(shù)據(jù)庫的兼容性,因此決定選用Access來開發(fā)。Access具有強(qiáng)大的窗體創(chuàng)建、報(bào)表打印、VBA編程功能,足以勝任大部分小型數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)。
創(chuàng)建數(shù)據(jù)庫和表
1. 打開Microsoft Office Access,創(chuàng)建一個(gè)空數(shù)據(jù)庫,與相片的分類目錄放在同一個(gè)文件夾下。
2. 使用“文件→獲取外部數(shù)據(jù)→導(dǎo)入”功能將Excel表直接導(dǎo)入Access中,保存為“證書信息”表。
創(chuàng)建證書信息報(bào)表
1. 創(chuàng)建“證書信息”報(bào)表,先插入一個(gè)“圖像”控件,設(shè)置其圖片屬性為證書模板圖片,設(shè)置其大小為證書模板的大小,設(shè)置其可見性為否,這樣有利于證書信息的排版,且不會(huì)打印出來;再依次插入要打印的字段列表,設(shè)置好字體和字號;最后再插入一個(gè)“圖像”控件,放置于打印相片的地方,設(shè)置其大小為相片的大小,設(shè)置其名稱為“stuimg”。
2. 依次點(diǎn)擊菜單欄“視圖→代碼”命令,進(jìn)入VBA代碼編寫窗口,編寫如下代碼:
Private Sub 主體_Format(Cancel As Integer, FormatCount As Integer)
Dim imgpath As String
' 依據(jù)應(yīng)用程序路徑、認(rèn)證項(xiàng)目名稱、姓名得到相片路徑
imgpath = Application.CurrentProject.Path +"\" +認(rèn)證項(xiàng)目.text +"\"+ 姓名.Text+".jpg"
' 判斷照片是否存在,如果不存在則顯示一張空白的圖片。
If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "\noimg.bmp"
Stuimg.Picture = imgpath
End Sub
創(chuàng)建打印預(yù)覽面板窗體
1. 創(chuàng)建“打印預(yù)覽面板”,依次放置一個(gè)用于查詢的文本框,并命名為“inputname”;兩個(gè)命令按鈕“預(yù)覽”、“關(guān)閉”。
2. 依次點(diǎn)擊菜單欄“視圖→代碼”命令,進(jìn)入VBA代碼編寫窗口,編寫如下代碼:
Public stuname As String '定義全局變量stuname
Sub PrintReports(PrintMode As Integer)
' 創(chuàng)建打印預(yù)覽子程序
Dim strWhereCategory As String
If stuname <> Empty Then
strWhereCategory = "姓名= '" + stuname + "'"
End If
DoCmd.OpenReport "證書信息", PrintMode, , strWhereCategory
DoCmd.Close acForm, "打印預(yù)覽面板"
End Sub
Private Sub inputname_Change()
考慮到時(shí)間上的緊迫性,還有用戶操作的易用性,以后上網(wǎng)查詢所需數(shù)據(jù)庫的兼容性,因此決定選用Access來開發(fā)。Access具有強(qiáng)大的窗體創(chuàng)建、報(bào)表打印、VBA編程功能,足以勝任大部分小型數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)。
創(chuàng)建數(shù)據(jù)庫和表
1. 打開Microsoft Office Access,創(chuàng)建一個(gè)空數(shù)據(jù)庫,與相片的分類目錄放在同一個(gè)文件夾下。
2. 使用“文件→獲取外部數(shù)據(jù)→導(dǎo)入”功能將Excel表直接導(dǎo)入Access中,保存為“證書信息”表。
創(chuàng)建證書信息報(bào)表
1. 創(chuàng)建“證書信息”報(bào)表,先插入一個(gè)“圖像”控件,設(shè)置其圖片屬性為證書模板圖片,設(shè)置其大小為證書模板的大小,設(shè)置其可見性為否,這樣有利于證書信息的排版,且不會(huì)打印出來;再依次插入要打印的字段列表,設(shè)置好字體和字號;最后再插入一個(gè)“圖像”控件,放置于打印相片的地方,設(shè)置其大小為相片的大小,設(shè)置其名稱為“stuimg”。
2. 依次點(diǎn)擊菜單欄“視圖→代碼”命令,進(jìn)入VBA代碼編寫窗口,編寫如下代碼:
Private Sub 主體_Format(Cancel As Integer, FormatCount As Integer)
Dim imgpath As String
' 依據(jù)應(yīng)用程序路徑、認(rèn)證項(xiàng)目名稱、姓名得到相片路徑
imgpath = Application.CurrentProject.Path +"\" +認(rèn)證項(xiàng)目.text +"\"+ 姓名.Text+".jpg"
' 判斷照片是否存在,如果不存在則顯示一張空白的圖片。
If Dir(imgpath) = "" Then imgpath = Application.CurrentProject.Path + "\noimg.bmp"
Stuimg.Picture = imgpath
End Sub
創(chuàng)建打印預(yù)覽面板窗體
1. 創(chuàng)建“打印預(yù)覽面板”,依次放置一個(gè)用于查詢的文本框,并命名為“inputname”;兩個(gè)命令按鈕“預(yù)覽”、“關(guān)閉”。
2. 依次點(diǎn)擊菜單欄“視圖→代碼”命令,進(jìn)入VBA代碼編寫窗口,編寫如下代碼:
Public stuname As String '定義全局變量stuname
Sub PrintReports(PrintMode As Integer)
' 創(chuàng)建打印預(yù)覽子程序
Dim strWhereCategory As String
If stuname <> Empty Then
strWhereCategory = "姓名= '" + stuname + "'"
End If
DoCmd.OpenReport "證書信息", PrintMode, , strWhereCategory
DoCmd.Close acForm, "打印預(yù)覽面板"
End Sub
Private Sub inputname_Change()