朱慶國
(河北省水利水電勘測設(shè)計研究院,天津 300250)
利用VB訪問數(shù)據(jù)庫和操控Excel完善HBGys報表輸出
朱慶國
(河北省水利水電勘測設(shè)計研究院,天津 300250)
HBGys是廣泛應(yīng)用在河北省的造價編制軟件,利用VB訪問數(shù)據(jù)庫和操控Excel完善對河北水利水電工程概預(yù)算系統(tǒng)的報表輸出功能,使輸出的報表更加格式化、規(guī)范化,減輕后期編輯的工作量。
水利水電工程概預(yù)算系統(tǒng);報表輸出;VB;Excel的Ole;數(shù)據(jù)訪問對象DAO
河北水利水電工程概預(yù)算系統(tǒng)(以下簡稱HBGys)是廣泛應(yīng)用在河北省的造價編制軟件,其成果輸出主要采用:①利用軟件中集成的報表打印工具直接打印已設(shè)置好格式的報表;②利用Excel的自動化技術(shù)(Excel的Ole)將數(shù)據(jù)直接生成Excel表單。相對于第1種輸出方法,第2種方法具有更大的靈活性,可進行個性化編輯,也更適合各單位的文件印刷系統(tǒng)。但目前HBGys此功能編寫的較為簡單,雖然能將數(shù)據(jù)輸出為Excel表單,但Excel表單格式設(shè)計較為簡陋,輸出速度慢,后期編輯量較大,難以滿足直接打印輸出的要求。針對軟件的問題,利用VB訪問數(shù)據(jù)庫和操控Excel來完善HBGys的報表輸出,可提高工作效率,使概預(yù)算系統(tǒng)的報表輸出更加規(guī)范化、格式化。
HBGys的單個工程項目的數(shù)據(jù)輸入、中間計算成果、數(shù)據(jù)輸出成果均保存在后綴為“Slg”文件中,究其實質(zhì),它是一種純粹的Access型數(shù)據(jù)庫,利用Microsoft Office軟件包中的Access軟件將其打開,可仔細研究數(shù)據(jù)輸出成果存放的各個表單名稱及其數(shù)據(jù)結(jié)構(gòu)。如其水利概算的第1~5部分輸出成果分別保存在gsb1、gsb2、gsb3、gsb4、gsb5表單中。
當(dāng)熟悉了數(shù)據(jù)庫的表單內(nèi)容和數(shù)據(jù)庫結(jié)構(gòu)后,就可以利用各種高級編程語言和數(shù)據(jù)訪問對象對數(shù)據(jù)庫進行查詢、編輯、建表修改結(jié)構(gòu)等,此次只是利用查詢功能,將查詢到的數(shù)據(jù)通過高級編程語言,利用Excel的Ole來操控Excel,將數(shù)據(jù)傳輸?shù)紼xcel中。為實現(xiàn)以上功能主要通過2個步驟實現(xiàn):①數(shù)據(jù)庫操作,打開數(shù)據(jù)庫,查找到合適數(shù)據(jù),關(guān)閉數(shù)據(jù)庫;②自動打開Excel,建立Excel文件,將查找到的數(shù)據(jù)輸出到文件中,并設(shè)立相應(yīng)的格式。本文將利用VB、數(shù)據(jù)訪問對象DAO及Excel的Ole來實現(xiàn)以上功能。
VB是種高級編程語言,常常被工程技術(shù)人員應(yīng)用在工作中編寫工程實用程序,DAO全稱為數(shù)據(jù)訪問對象,是數(shù)據(jù)庫編程的重要方法之一。DAO是一種面向?qū)ο蟮慕缑娼涌?,不是可視化的對象,使用它全部都要靠編碼來完成。
DAO使用之前必須先引用。方法為打開VB6.0,從VB的“工程”菜單中,選擇“引用”項,當(dāng)“引用”對話框出現(xiàn)后,從庫的列表中,選擇“Microsoft DAO 3.51 Object Library”,單擊“確定”?,F(xiàn)在便可以使用DAO對象庫提供的所有對象進行編程。
1.1.1 打開數(shù)據(jù)庫
在VB中對一個對象變量引用之前必須加以說明,DAO也是如此,必須先聲明數(shù)據(jù)庫變量。建立了數(shù)據(jù)庫對象變量后,我們便可打開數(shù)據(jù)庫了,當(dāng)打開數(shù)據(jù)庫后再對數(shù)據(jù)庫中的各個記錄進行操作,這就要用到Recordset對象建立記錄集。例如:
這樣,“南水北調(diào)概算.slg”中“gsb1”的表單數(shù)據(jù)便放到Recordset中,可以進行后續(xù)操作。當(dāng)然也可以使用結(jié)構(gòu)化查詢語言代替“gsb1”。
1.1.2 使用數(shù)據(jù)庫
當(dāng)打開數(shù)據(jù)庫,建立Recordset記錄集后,便可瀏覽、刪除、添加、查找數(shù)據(jù)庫中的內(nèi)容。例如:
通過以上程序,表單gsb1中的主要內(nèi)容就分別存儲在各個變量中,以備使用。
Excel使用前必須先引用。 方法為打開VB6.0,從VB的“工程”菜單中,選擇“引用”項,當(dāng)“引用”對話框出現(xiàn)后,從庫的列表中,選擇“Microsoft Excel 9.0 Object Library”,單擊“確定”。現(xiàn)在便可以通過Excel的Ole來使用Excel對象庫提供的所有對象進行編程了。
為了在VB應(yīng)用程序中調(diào)用Excel,必須要了解Excel對象模型。其中最重要的對象,即涉及VB調(diào)用Excel最可能用到的對象有:
1.2.1 生成、保存、關(guān)閉工作簿
Application對象是Excel對象模型的頂層,表示整個Excel應(yīng)用程序。其下就是Workbook,利用Workbook就可以完成新建一個Excel文件并保存它。例如:
1.2.2 生成和使用工作表
Sheets集合表示工作簿中所有的工作表??梢酝ㄟ^Sheets集合來訪問、激活、增加、更名和刪除工作表。可以通過對其下的ranges、columns、rows、cells對象賦予數(shù)據(jù)和格式, 來完成最終的Excel表格。例如:
以上介紹幾種完善Excel表單格式的方法,由于篇幅所限,不能一一完整列出,只是介紹一些主要方法。只要熟悉Excel對象模型,就可以在程序中設(shè)置更多、更細致的格式。
由于受到Excel的Ole技術(shù)限制,表格的輸出速度不快,通過以下幾種方法,可以使輸出速度得到成倍提高。
Excel的自動化技術(shù)技術(shù)受打印機影響非常大,目前的辦公條件下,一般是很多計算機使用一臺網(wǎng)絡(luò)打印機,在默認(rèn)此打印機的條件下,輸出速度就會受到很大限制??梢栽谙到y(tǒng)下設(shè)置一臺虛擬的本地打印機,在輸出前先將打印機設(shè)置為這臺虛擬本地打印機,此時的輸出速度就會成倍提高。
Excel自動化技術(shù)在設(shè)置格式時一般較從數(shù)據(jù)庫直接輸出數(shù)據(jù)要慢得多。為了提高速度,創(chuàng)建一個Excel文件,將水利水電工程概預(yù)算成果的表格題頭及格式均預(yù)先設(shè)置好,保存在計算機上。當(dāng)要輸出表格式,直接打開此文件,輸出數(shù)據(jù)到文件里,此時的輸出速度也會成倍提高。
利用VB訪問數(shù)據(jù)庫和操控Excel來完善河北水利水電工程概預(yù)算系統(tǒng)的報表輸出,目前已全面完成軟件的編制,并應(yīng)用在實際工程中。通過該軟件大大提高了工作效率,使繁重的表格編輯工作變得更加輕松。
[1]Jeffery P.MeManus著.羅四維,韓臻,等譯.用Visual basic 訪問數(shù)據(jù)庫[M].北京:電子工業(yè)出版社,1999.
[2]蕭楓,堯遠.Visualbasic實用技術(shù)精粹[M].北京:人民郵電出版社,1999.
[3]伍遠高.Excel VBA開發(fā)技術(shù)大全[M].北京:清華大學(xué)出版社,2009.
[4]本書編委會.水利工程設(shè)計概(估)算編制規(guī)定[M].鄭州:黃河水利出版社,2002.
TV512
B
1672-9900(2011)01-0086-03
2011-01-11
朱慶國(1969-),男(漢族),陜西西安人,高級工程師,主要從事水利水電工程施工組織設(shè)計及造價工作,(Tel)13612055252。