摘要 傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)應(yīng)用程序,數(shù)據(jù)的錄入操作是通過(guò)一系列文本框輸入一條記錄的各個(gè)字段,每次操作只能向數(shù)據(jù)庫(kù)寫入一條記錄。本文以Visual Basic為編程語(yǔ)言,以Microsoft Office Web Components組件的電子表格Spreadsheet為用戶界面,運(yùn)用面向?qū)ο蟮木幊谭椒ǎ瑢?shí)現(xiàn)多記錄大批量數(shù)據(jù)一鍵完成寫入數(shù)據(jù)庫(kù),解決長(zhǎng)期以來(lái)困擾關(guān)系數(shù)據(jù)庫(kù)開發(fā)中數(shù)據(jù)錄入和寫入的瓶頸問(wèn)題。
關(guān)鍵詞 Visual Basic;Spreadsheet;寫入數(shù)據(jù)庫(kù)
中圖分類號(hào):TP311.1 文件標(biāo)識(shí)碼:A 文章編號(hào):1671-489X(2007)11-0069-03
Implementation of a Click Rrecordset Writing into Databasce on VB//Feng Fangchu
Abstract The traditionay application program of relational database, the operation of data-in is writing all flieds of record by textbox controls, the operation is writed into database the only record. This text is by programming language of Visual Basic 6.0, program interface by Spreadsheet of Micorosoft Office Web Components, and programming methods of Object Orient, implementing of a click Recordset data-in Database.It solves the problem of data-in and writing into Databse that troublesDatabase development for long time.
Key Words Visual Basic;Spreadsheet;write into Databasce
Author’s address The Center of Eductional Technology and Equipment of Guangxi,Nanning530012
傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)開發(fā)應(yīng)用程序以數(shù)據(jù)的檢索和數(shù)據(jù)的存貯為主要目標(biāo)。數(shù)據(jù)存貯的前期操作分為數(shù)據(jù)錄入和記錄寫入2個(gè)環(huán)節(jié)。傳統(tǒng)的數(shù)據(jù)錄入主要通過(guò)鍵盤手工進(jìn)行,記錄的寫入是一鍵寫入一條記錄。應(yīng)用程序的錄入操作的用戶界面是一系列文本框,每個(gè)文本框?qū)?yīng)記錄的一個(gè)字段,錄入操作費(fèi)工費(fèi)時(shí),對(duì)錄入數(shù)據(jù)的檢測(cè)糾錯(cuò)煩瑣[1-2]。本系統(tǒng)用Visual Basic 6.0編程,以Microsoft Office Web Components組件的電子表格Spreadsheet為用戶界面,運(yùn)用面向?qū)ο蟮木幊谭椒ǎ瑢?shí)現(xiàn)對(duì)Micrososft Access數(shù)據(jù)庫(kù)的多記錄大批量數(shù)據(jù)一鍵寫入。Microsoft Office Web Components組件和Micrososft Access數(shù)據(jù)庫(kù)系統(tǒng)均為微軟公司產(chǎn)品,集成在Microsoft Office產(chǎn)品中,價(jià)格低廉,易購(gòu)易得,是個(gè)人電腦中廣泛流行的應(yīng)用軟件,有數(shù)量眾多的用戶群。作為應(yīng)用程序用戶界面的電子表格Spreadsheet,以表格的形式顯示錄入的數(shù)據(jù),表格中數(shù)據(jù)之間的關(guān)系符合現(xiàn)實(shí)數(shù)據(jù)之間的邏輯關(guān)系,視窗式界面符合人們傳統(tǒng)視覺(jué)習(xí)慣,易為人們接受。電子表格Spreadsheet有對(duì)其上的數(shù)據(jù)進(jìn)行復(fù)制、粘貼、刪除、篩選和排序等功能,充分運(yùn)用這些功能,可以加快數(shù)據(jù)錄入速度,對(duì)錄入的多記錄大批量數(shù)據(jù)快速檢測(cè)糾錯(cuò)。
1 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
本系統(tǒng)的用戶界面是Microsoft Office Web Components組件的電子表格Spreadsheet,它是系統(tǒng)與用戶對(duì)話的主要接口。通過(guò)Visual Basic的編程,使電子表格Spreadsheet可以對(duì)底層數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行存取。系統(tǒng)的設(shè)計(jì)過(guò)程分為2個(gè)步驟:
1.1 應(yīng)用程序的界面設(shè)計(jì)
打開Visual Basic,在主窗口建立標(biāo)準(zhǔn)窗體,設(shè)置編程環(huán)境。在主窗口的“工程”菜單的“引用”子菜單中,選擇“Microsoft ActiveX Data Objects 2.7 Library”子項(xiàng)。返回“工程”菜單,點(diǎn)擊“部件”子菜單,選擇“Microsoft Office Web Components 9.0”子項(xiàng)。返回標(biāo)準(zhǔn)窗體,在標(biāo)準(zhǔn)窗體中放置Microsoft Office Web Components組件的電子表格Spreadsheet控件,在屬性窗口設(shè)置電子表格Spreadsheet的屬性。返回主窗口,在標(biāo)準(zhǔn)窗體上設(shè)置編輯應(yīng)用程序菜單和工具控件,通過(guò)編程代碼使菜單與工具控件相關(guān)聯(lián)。應(yīng)用程序的菜單和工具控件的設(shè)置、選擇,根據(jù)應(yīng)用程序功能需要和用戶操作習(xí)慣,以及應(yīng)用程序用戶界面美觀要求等因素來(lái)確定。
1.2 底層數(shù)據(jù)庫(kù)設(shè)置
傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)應(yīng)用程序的界面是與用戶直接對(duì)話的接口,底層數(shù)據(jù)庫(kù)則是應(yīng)用程序的核心組成部分。在本系統(tǒng)中,選擇應(yīng)用廣泛,價(jià)格低廉,易購(gòu)易得且個(gè)人電腦基本配置支持的Micrososft Access數(shù)據(jù)庫(kù)系統(tǒng)作為底層數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)的表格、字段及其屬性可以根據(jù)應(yīng)用程序的功能和需要,用數(shù)據(jù)庫(kù)系統(tǒng)的管理工具來(lái)設(shè)置,也可用Visual Basic編程的方法來(lái)設(shè)置。數(shù)據(jù)庫(kù)設(shè)置完畢后,把它放置在應(yīng)用程序開發(fā)文件的同一目錄下,便于程序的編譯和部署。
本系統(tǒng)的用戶界面如圖1所示,圖中窗口左面的控件是一個(gè)樹狀目錄控件,在系統(tǒng)中的功能是與應(yīng)用程序底層數(shù)據(jù)庫(kù)的表格相關(guān)連。

2 Visual Basic代碼的運(yùn)用及其關(guān)鍵代碼
Visual Basic是一種面向?qū)ο蟮母呒?jí)編程語(yǔ)言,它使用ActiveX對(duì)象的步驟為:初始化并創(chuàng)建一個(gè)自動(dòng)化的對(duì)象—調(diào)用對(duì)象的屬性、方法和事件編寫代碼—使用對(duì)象后釋放對(duì)象[3]。本系統(tǒng)的編程關(guān)鍵在于:數(shù)據(jù)庫(kù)對(duì)象的編程和電子表格Spreadsheet對(duì)象與數(shù)據(jù)對(duì)象的鏈接。本系統(tǒng)中,首先在編程環(huán)境設(shè)置時(shí)選擇了對(duì)“Microsoft ActiveX Data Objects 2.7 Library”的引用,就可使用ADO對(duì)象來(lái)鏈接數(shù)據(jù)源。于是就可以用如下代碼連接數(shù)據(jù)庫(kù),并設(shè)置數(shù)據(jù)對(duì)象的引用:
Public Con As ADODB.Connection
Public Rs As ADODB.Recordset
Public spr As OWC.Spreadsheet
Set Con = New ADODB.Connection
Con.ConnectionString = _
\"Provider=Microsoft.Jet.OLEDB.4.0 ;\" _
\"data source = \" App.Path \"\\db1.mdb\"
Con.Open
Set Rs = New ADODB.Recordset
前面在編程環(huán)境設(shè)置時(shí)選擇了使用部件Microsoft Office Web Components組件,就可以使用OWC對(duì)象庫(kù)的屬性、方法和事件來(lái)編寫代碼[4]。具體來(lái)說(shuō),就是用電子表格Spreadsheet的屬性、方法和事件來(lái)編寫代碼,使錄入窗口的電子表格Spreadsheet的單元格分別與數(shù)據(jù)對(duì)象的字段一一對(duì)應(yīng)并相互鏈接。詳細(xì)代碼如下:
Public spr As OWC.Spreadsheet
Set spr = New As OWC.Spreadsheet
With Rs
.AddNew
.Fields(\"ruqi\").Value=frmName.spr.Cells(Rw,1).Value
End With
把本系統(tǒng)編程的2個(gè)關(guān)鍵問(wèn)題的代碼連起來(lái),本系統(tǒng)的核心代碼大致如下:
Public Con As ADODB.Connection(對(duì)象的引用)
Public Rs As ADODB.Recordset
Public spr As OWC.Spreadsheet
Set Con = New ADODB.Connection(對(duì)象的使用)
Con.ConnectionString = _
\"Provider=Microsoft.Jet.OLEDB.4.0 ;\" _
\"data source = \" App.Path \"\\db1.mdb\"
Con.Open
Set Rs = New ADODB.Recordset
Set spr=New OWC.SpreadSheet
With Rs
.ActiveConnection = Con
.Open TableName, LockType:=adLockOptimistic
End With
For Rw = 2 To Rws(frmName, 2, 1)(寫入數(shù)據(jù))
With Rs
.AddNew
.Fields(\"ruqi\").Value=frmName.spr.Cells(Rw,1).Value
.
.
.
.Update
End With
Next Rw
Rs.Close
Con.Close
Set spr=Nothing (釋放對(duì)象)
Set Rs=Nothing
Set Con=Nothing
3 系統(tǒng)程序運(yùn)行流程
本系統(tǒng)在用Visual Basic代碼設(shè)置ADO數(shù)據(jù)對(duì)象時(shí),有一行代碼是“Provider=Microsoft.Jet.OLEDB.4.0”,它至關(guān)重要。在本系統(tǒng)中,它起到數(shù)據(jù)提供者的作用,ADO數(shù)據(jù)對(duì)象只有通過(guò)它才能存取底層數(shù)據(jù)庫(kù)的數(shù)據(jù)。也有的人把它叫做數(shù)據(jù)庫(kù)引擎。不同的數(shù)據(jù)庫(kù)系統(tǒng),有不同的數(shù)據(jù)提供者。本系統(tǒng)的數(shù)據(jù)運(yùn)行流程圖如圖2所示:

4 結(jié)束語(yǔ)
本系統(tǒng)使用Microsoft Office Web Components組件的電子表格Spreadsheet作為傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)開發(fā)應(yīng)用程序的用戶界面,實(shí)現(xiàn)大批量多記錄數(shù)據(jù)一鍵寫入數(shù)據(jù)庫(kù)的功能。用此方法編寫多個(gè)應(yīng)用程序用于業(yè)務(wù)工作當(dāng)中,都會(huì)取得成功。實(shí)踐取得預(yù)期效果,顯示其優(yōu)越性。該系統(tǒng)的的開發(fā)技術(shù)基于微軟公司公開的產(chǎn)品和技術(shù)標(biāo)準(zhǔn),技術(shù)成熟,系統(tǒng)的后期維護(hù)成本低,操作簡(jiǎn)易。
本文提出的的傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)方法和思路,具有普遍性。面向?qū)ο蠓椒ā?OLE DB、SQL語(yǔ)言等,都可以用于開發(fā)其他關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用程序上[4-5]。有興趣者可以循本文的思路,把這些方法應(yīng)用到其他大型關(guān)系數(shù)據(jù)庫(kù)的應(yīng)用程序開發(fā)。
參考文獻(xiàn):
[1]Henry F.Korth,S.Sudarshan.數(shù)據(jù)庫(kù)系統(tǒng)概念[M].楊冬青,唐世涓,譯.北京:機(jī)械工業(yè)版社,2003
[2]Dvid M.Kroenke.數(shù)據(jù)庫(kù)處理——基礎(chǔ)、設(shè)計(jì)與實(shí)現(xiàn)[M].8版.施伯樂(lè),顧寧,孫未未,等譯.北京:電子工業(yè)出版社,2003
[3]Steven Jordan,牛力.Visual Basic 6編程寶典[M].北京:電子工業(yè)出版社,2005
[4]段興,吳德勝,齊曉亮,等.Visual Basic 6.0數(shù)據(jù)庫(kù)使用程序設(shè)計(jì)100例[M].北京:人民郵電出版社,2002
[5]Wayne Freeze.Visual Basic數(shù)據(jù)庫(kù)編程寶典[M].尹喆,馮碩,賈志博,等譯.北京:電子工業(yè)出版社,2001