朱慶國
(河北省水利水電勘測設計研究院,天津 300250)
利用VB訪問數據庫和操控Excel完善HBGys報表輸出
朱慶國
(河北省水利水電勘測設計研究院,天津 300250)
HBGys是廣泛應用在河北省的造價編制軟件,利用VB訪問數據庫和操控Excel完善對河北水利水電工程概預算系統的報表輸出功能,使輸出的報表更加格式化、規范化,減輕后期編輯的工作量。
水利水電工程概預算系統;報表輸出;VB;Excel的Ole;數據訪問對象DAO
河北水利水電工程概預算系統(以下簡稱HBGys)是廣泛應用在河北省的造價編制軟件,其成果輸出主要采用:①利用軟件中集成的報表打印工具直接打印已設置好格式的報表;②利用Excel的自動化技術(Excel的Ole)將數據直接生成Excel表單。相對于第1種輸出方法,第2種方法具有更大的靈活性,可進行個性化編輯,也更適合各單位的文件印刷系統。但目前HBGys此功能編寫的較為簡單,雖然能將數據輸出為Excel表單,但Excel表單格式設計較為簡陋,輸出速度慢,后期編輯量較大,難以滿足直接打印輸出的要求。針對軟件的問題,利用VB訪問數據庫和操控Excel來完善HBGys的報表輸出,可提高工作效率,使概預算系統的報表輸出更加規范化、格式化。
HBGys的單個工程項目的數據輸入、中間計算成果、數據輸出成果均保存在后綴為“Slg”文件中,究其實質,它是一種純粹的Access型數據庫,利用Microsoft Office軟件包中的Access軟件將其打開,可仔細研究數據輸出成果存放的各個表單名稱及其數據結構。如其水利概算的第1~5部分輸出成果分別保存在gsb1、gsb2、gsb3、gsb4、gsb5表單中。
當熟悉了數據庫的表單內容和數據庫結構后,就可以利用各種高級編程語言和數據訪問對象對數據庫進行查詢、編輯、建表修改結構等,此次只是利用查詢功能,將查詢到的數據通過高級編程語言,利用Excel的Ole來操控Excel,將數據傳輸到Excel中。為實現以上功能主要通過2個步驟實現:①數據庫操作,打開數據庫,查找到合適數據,關閉數據庫;②自動打開Excel,建立Excel文件,將查找到的數據輸出到文件中,并設立相應的格式。本文將利用VB、數據訪問對象DAO及Excel的Ole來實現以上功能。
VB是種高級編程語言,常常被工程技術人員應用在工作中編寫工程實用程序,DAO全稱為數據訪問對象,是數據庫編程的重要方法之一。DAO是一種面向對象的界面接口,不是可視化的對象,使用它全部都要靠編碼來完成。
DAO使用之前必須先引用。方法為打開VB6.0,從VB的“工程”菜單中,選擇“引用”項,當“引用”對話框出現后,從庫的列表中,選擇“Microsoft DAO 3.51 Object Library”,單擊“確定”。現在便可以使用DAO對象庫提供的所有對象進行編程。
1.1.1 打開數據庫
在VB中對一個對象變量引用之前必須加以說明,DAO也是如此,必須先聲明數據庫變量。建立了數據庫對象變量后,我們便可打開數據庫了,當打開數據庫后再對數據庫中的各個記錄進行操作,這就要用到Recordset對象建立記錄集。例如:

這樣,“南水北調概算.slg”中“gsb1”的表單數據便放到Recordset中,可以進行后續操作。當然也可以使用結構化查詢語言代替“gsb1”。
1.1.2 使用數據庫
當打開數據庫,建立Recordset記錄集后,便可瀏覽、刪除、添加、查找數據庫中的內容。例如:

通過以上程序,表單gsb1中的主要內容就分別存儲在各個變量中,以備使用。
Excel使用前必須先引用。 方法為打開VB6.0,從VB的“工程”菜單中,選擇“引用”項,當“引用”對話框出現后,從庫的列表中,選擇“Microsoft Excel 9.0 Object Library”,單擊“確定”。現在便可以通過Excel的Ole來使用Excel對象庫提供的所有對象進行編程了。
為了在VB應用程序中調用Excel,必須要了解Excel對象模型。其中最重要的對象,即涉及VB調用Excel最可能用到的對象有:

1.2.1 生成、保存、關閉工作簿
Application對象是Excel對象模型的頂層,表示整個Excel應用程序。其下就是Workbook,利用Workbook就可以完成新建一個Excel文件并保存它。例如:

1.2.2 生成和使用工作表
Sheets集合表示工作簿中所有的工作表。可以通過Sheets集合來訪問、激活、增加、更名和刪除工作表。可以通過對其下的ranges、columns、rows、cells對象賦予數據和格式, 來完成最終的Excel表格。例如:


以上介紹幾種完善Excel表單格式的方法,由于篇幅所限,不能一一完整列出,只是介紹一些主要方法。只要熟悉Excel對象模型,就可以在程序中設置更多、更細致的格式。
由于受到Excel的Ole技術限制,表格的輸出速度不快,通過以下幾種方法,可以使輸出速度得到成倍提高。
Excel的自動化技術技術受打印機影響非常大,目前的辦公條件下,一般是很多計算機使用一臺網絡打印機,在默認此打印機的條件下,輸出速度就會受到很大限制。可以在系統下設置一臺虛擬的本地打印機,在輸出前先將打印機設置為這臺虛擬本地打印機,此時的輸出速度就會成倍提高。
Excel自動化技術在設置格式時一般較從數據庫直接輸出數據要慢得多。為了提高速度,創建一個Excel文件,將水利水電工程概預算成果的表格題頭及格式均預先設置好,保存在計算機上。當要輸出表格式,直接打開此文件,輸出數據到文件里,此時的輸出速度也會成倍提高。
利用VB訪問數據庫和操控Excel來完善河北水利水電工程概預算系統的報表輸出,目前已全面完成軟件的編制,并應用在實際工程中。通過該軟件大大提高了工作效率,使繁重的表格編輯工作變得更加輕松。
[1]Jeffery P.MeManus著.羅四維,韓臻,等譯.用Visual basic 訪問數據庫[M].北京:電子工業出版社,1999.
[2]蕭楓,堯遠.Visualbasic實用技術精粹[M].北京:人民郵電出版社,1999.
[3]伍遠高.Excel VBA開發技術大全[M].北京:清華大學出版社,2009.
[4]本書編委會.水利工程設計概(估)算編制規定[M].鄭州:黃河水利出版社,2002.
TV512
B
1672-9900(2011)01-0086-03
2011-01-11
朱慶國(1969-),男(漢族),陜西西安人,高級工程師,主要從事水利水電工程施工組織設計及造價工作,(Tel)13612055252。