林晉立
(廣東產(chǎn)品質(zhì)量監(jiān)督檢驗研究院,廣州 510330)
在產(chǎn)品檢測機構中,出具檢測報告是檢驗員的日常工作。目前,檢驗員較多采用人工輸入的方式將信息錄入Word 文檔并出具檢測報告,報告內(nèi)包含樣品名稱、規(guī)格型號、送檢單位、樣品圖片等數(shù)據(jù)庫信息,手動錄入這些信息效率低下,且錯誤率高。若能使其自動生成于Word 文檔的指定位置,輔助人工錄入的方式,將極大提高工作效率。Visual Basic 具有圖形用戶界面GUI 及大量內(nèi)置控件,使用Basic 語言編程,通過ADO、DAO 與數(shù)據(jù)庫連接,無需復雜編程便可輕松高效地設計出應用程序[1]。
效率是產(chǎn)品檢測機構的立身之本,為提高檢驗員出具報告的速度與準確度,本文基于Visual Basic(VB)6.0 平臺設計了檢測報告自動生成系統(tǒng)。
在檢測報告中實現(xiàn)數(shù)據(jù)的自動錄入需要用到編程軟件,VB6.0 可便捷地連接Word、Excel等Office 辦公套件并實現(xiàn)數(shù)據(jù)的導入與導出[2-3]。因此,可供考慮的檢測報告自動生成方式有以下三種:①Excel表格數(shù)據(jù)直接寫入;②VB讀取Excel 數(shù)據(jù)寫入Word;③VB 讀取Access 數(shù)據(jù)庫寫入Word。
Excel 表格數(shù)據(jù)直接寫入的方式是指:把存在于Excel 工作表1 中的數(shù)據(jù)作為數(shù)據(jù)庫,Excel工作表2 作為需要生成的檢測報告模板,使用VLOOKUP、MATCH 等查詢檢索函數(shù)便捷地將表1 所需數(shù)據(jù)寫入表2 特定位置。這樣只需在表2 中確定檢索條件,就能調(diào)取表1 數(shù)據(jù),生成相應的檢測報告。
采用直接寫入的方式需要對Excel 表2 的行高、列寬進行處理,使表2 模板格式與Word 相同,移植模板的步驟較為繁瑣,適用于使用少量模板的情況。對檢測工作實際而言,不同的檢測樣品所使用的報告模板均不相同,在Excel中處理起來十分復雜,因此不適合使用這種方式。
VB 讀取Excel 數(shù)據(jù)寫入Word 文檔的方式是利用VB 軟件平臺分別與Excel 和Word 建立連接,先從Excel 中讀取所需數(shù)據(jù)并顯示于軟件界面,再將這些數(shù)據(jù)保存到Word 文檔的指定位置,信息傳遞路徑為:Excel-VB-Word。
VB 可以通過引用對象庫的方式調(diào)用Excel和Word進行讀寫操作,對于不同的Word檢測報告模板,只需在程序中加載不同的模板路徑即可,操作便利。但由于Excel 涉及到工作簿、工作表和單元格等屬性,在VB中編程較為復雜。
VB 讀取Access 數(shù)據(jù)庫寫入Word 文檔的方式與調(diào)用Excel 類似,利用Access-VB-Word 的信息傳遞,將Access 數(shù)據(jù)庫中相應數(shù)據(jù)通過VB保存到Word 文檔的指定位置。Access 可根據(jù)表中的主鍵進行搜尋,配合其余字段即可獲取數(shù)據(jù)庫的全體數(shù)據(jù),在VB中編程較為簡單。
對比上述三種方案,結(jié)合檢測報告出具實際,選擇第三種方案,即通過VB 讀取Access 數(shù)據(jù)庫寫入Word文檔的報告自動生成方式。
本文以排煙防火閥門檢測樣品為實例,詳細說明檢測報告自動生成系統(tǒng)的軟件代碼與界面設計。建立防火閥門樣品數(shù)據(jù)庫,如圖1 所示,檢測報告模板如圖2(a)所示。
圖1 樣品數(shù)據(jù)庫示例圖
圖2 檢測報告示例圖
由圖1 與圖2(a)可知,數(shù)據(jù)庫中形如檢測單號、樣品名稱、規(guī)格型號等信息均為檢測報告中需要錄入的數(shù)據(jù)。
在VB 6.0 中連接Access 數(shù)據(jù)庫,需要在菜單欄的“工程→引用”中添加Microsoft ActiveX Data Objects 6.1 Library,即Microsoft ActiveX 數(shù)據(jù)對象庫6.1版本,也稱為ADO庫,版本號跟隨操作系統(tǒng)。
連接Access 數(shù)據(jù)庫并調(diào)用數(shù)據(jù)的VB 代碼如下:
在上述代碼中,“+App.Path+”表示相對路徑,“+App.Path+‘檢測樣品數(shù)據(jù)庫.accdb’”表示將檢測樣品數(shù)據(jù)庫文件與執(zhí)行軟件放在同一文件夾內(nèi),可使執(zhí)行軟件連接并讀取數(shù)據(jù)庫。
與連接Access 相同,VB6.0 連接Word 文檔,需要在菜單欄的“工程→引用”中添加Micro?soft Word 15.0 Object Library,即Microsoft Word 15.0 對象庫,版本號跟隨操作系統(tǒng)。此外,向Word 文檔寫入數(shù)據(jù)前,需要確定數(shù)據(jù)顯示的位置,可在Word 菜單欄的“插入→書簽”中添加書簽并設置書簽名來實現(xiàn)。由圖2(a)模板示例可知,出具此份檢測報告需要輸入的信息有:檢測單號、產(chǎn)品名稱、型號規(guī)格、生產(chǎn)企業(yè)、檢測性質(zhì)、隨機號、檢測數(shù)據(jù)和樣品圖片,多數(shù)信息已通過2.1 節(jié)的代碼顯示在TextBox 控件中,將這些信息寫入檢測報告模板并保存的代碼如下:
上述代碼中,P1~P8 是在Word 文檔內(nèi)設置的書簽名,分別對應需要寫入的數(shù)據(jù)Text1.Text~Text8.Text。數(shù)據(jù)自動跟隨報告模板中的原有格式,無需通過編程設置。除了使用“.ActiveDocument.Bookmarks(‘書簽名’).Range.Text=Text1.Text”語句向書簽寫入數(shù)據(jù)外,還可以在菜單欄的“開發(fā)工具→舊式工具”中添加文本域窗體控件,該控件和書簽一樣起到定位的作用,向文本域控件寫入數(shù)據(jù)的代碼為“.ActiveDocument.FormFields(‘文本域名’).Result=Text1.Text”。利用此方式寫入的每個數(shù)據(jù)都是單獨的整體,導出后可以修改數(shù)據(jù)格式,但無法逐字編輯。
在Word 書簽位置插入圖片的方法與寫入數(shù)據(jù)略有不同,還需對圖片大小進行設置,具體代碼如下:
圖片的尺寸可在控件Text10 和Text11 中自行設定,“Path”為圖片路徑,可使用Common?Dialog 控件將其具體路徑加載至控件Text9 中,代碼如下:
將數(shù)據(jù)庫文件、檢測報告Word 模板與VB工程放在同一文件夾下,在VB6.0 窗體中添加CommandButton、TextBox 和CommonDialog 控件,并在相應的CommandButton 控件中編寫上述代碼,運行程序便能獲得數(shù)據(jù)自動生成的檢測報告,如圖2(b)所示。軟件的代碼編寫與操作流程實例詳見:https://list.youku.com/albumlist/show/id_68855948。
除了編寫程序代碼,設計軟件界面也十分重要。根據(jù)防火閥門檢測報告中的相關信息,設計軟件界面如圖3所示。
圖3 檢測報告生成系統(tǒng)界面圖
“查詢”按鈕下的程序代碼為2.1 節(jié)中連接Access 數(shù)據(jù)庫并讀取數(shù)據(jù)的VB 代碼,輸入檢測單號并點擊“查詢”按鈕,樣品信息逐一顯示在相應位置;點擊“打開”按鈕彈出對話框,選中需要載入的圖片,TextBox 中出現(xiàn)圖片的具體路徑;輸入檢測數(shù)據(jù),設置圖片的寬度和高度,點擊“生成報告”按鈕,執(zhí)行2.2 節(jié)中VB寫入Word 文檔的代碼,將數(shù)據(jù)和圖片寫入新建的檢測報告模板中;點擊“報告另存為”按鈕,可自行設置報告的文件名及存儲路徑;記事板提供存儲功能,在其中編輯信息并點擊保存按鈕后關閉軟件,待下次啟動時,信息仍將顯示在記事板中。
檢測報告自動生成系統(tǒng)經(jīng)過調(diào)試,能夠穩(wěn)定運行并生成報告。安排六位檢驗員分別使用此系統(tǒng)出具一份相同的檢測報告,并對其出具報告的時間進行測試與分析。在六位檢驗員中,甲、乙、丙為熟手,對報告出具流程十分熟悉;檢驗員丁、戊、己為生手,未曾出具該樣品的檢測報告,測試數(shù)據(jù)如表1所示。表中,T1為人工錄入用時;T2為系統(tǒng)操作用時。
表1 6位檢驗員出具報告用時測試
由表1數(shù)據(jù)可知,使用人工錄入方式出具一份相同的報告,熟手所用的平均時間比生手快7.0 min;使用自動生成系統(tǒng)出具檢測報告,熟手與生手用時相差不大;自動生成系統(tǒng)為生手檢驗員提供了更大的便利。
六位檢驗員使用人工錄入方式出具一份報告的平均時間為13.4 min,使用系統(tǒng)操作的時間為5.7 min,效率比約為3∶7;采用檢測報告生成系統(tǒng)出具報告的效率比采用人工錄入方式高約135%。
本文基于VB 6.0 編程軟件設計了檢測報告的自動生成系統(tǒng),對系統(tǒng)代碼的編寫與界面設計作了詳細介紹。系統(tǒng)通過VB 調(diào)用Access 數(shù)據(jù)庫信息,并將數(shù)據(jù)和圖片保存到Word 文檔中,以Access-VB-Word 的數(shù)據(jù)傳遞方式自動生成檢測報告。對六位檢驗員出具報告的時間進行測試,結(jié)果顯示采用自動生成系統(tǒng)出具報告的效率相比人工錄入方式高約135%,系統(tǒng)準確、高效,具有一定的應用價值。除了出具檢測報告外,在日常辦公中處理具有固定模板的Word 文檔,均可通過Access-VB-Word 方式快速插入數(shù)據(jù)與圖片,根據(jù)不同的模板與內(nèi)容設計代碼和界面即可。