999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Delphi自定義類在Word文檔數據庫中的應用

2013-08-11 07:13:00長江大學地球物理與石油資源學院湖北武漢430100
長江大學學報(自科版) 2013年28期
關鍵詞:數據庫

肖 希 (長江大學地球物理與石油資源學院,湖北 武漢430100)

劉 苗 (華工科技孝感產業園人力資源部,湖北 孝感432000)

隨著計算機信息技術的飛速發展和普及運用,加上政府、學校部門的大力宣傳推廣,無紙化辦公以其節能環保、跨地域、跨平臺的優勢越來越受到公眾的接受和青睞。而在辦公自動化的系統中,工作人員多是使用微軟公司的Word編寫通知策劃、總結分析等電子文檔。因此,方便用戶閱讀、提交個人材料,實現Word文檔的網絡共享、安全可靠是提高辦公部門工作效能的重要方式之一。而這些操作通過現在比較成熟的數據庫技術即可實現,在利用Delphi開發的人力資源管理信息系統中,將Word文檔以BLOB(Binary Large Object,二進制大對象)的形式存放在數據表的字段中,既可以避免C/S(客戶端/服務器)模式下文檔直接存放于磁盤中非法操作和壞道產生的不可逆錯誤[1],也可以提高文檔的存取速度。

下面,筆者通過對SQL Server 2000數據庫的操作封裝到開發者自定義的類中,先將文件流(FileStream)轉換為字符串 (String)存入文檔,讀取時再將字符串導出為文件流操作,并使用基于Delphi開發平臺提供的容器組件 (TOleContainer)載入文檔,達到高效管理Word文檔的目的。其中,著重介紹了Delphi自定義類Word文檔在數據庫 (人力資源管理信息系統)中實現存、取功能應用過程和方法。

1 基本原理

1.1 三層應用程序體系結構

越來越多的數據庫應用程序都采用多層結構,其中三層結構運用最為廣泛,即用戶界面層 (表示層)、業務層和數據連接層[2]。數據庫的操作邏輯處在中間層上,集中管理數據庫操作各類交互命令,從而使來自不同終端的客戶能夠使用同一個數據。針對這種情況,筆者將數據連接層和業務層封裝在自定義的類中,這樣編寫不僅能夠實現大量代碼的復用功能,也降低了應用程序在系統中的維護難度。

1.2 Delphi與自定義類

Object Pascal就是Delphi[3]實現面向對象的程序設計語言,具有可讀性好、容易編寫的特點,并提供了完整的編程機制支持面向對象程序設計,涵蓋了對象的封裝、繼承和多態等基本特性[4]。

Delphi自定義類就是程序員在Delphi中根據對象需求和特性自己創建的類,通常分為內建類(Type類名=class(父類))和完全自定義類 (Type類名=object(父類)),主要是在內存管理方式上的區別。由于完全自定義類在為構造和析構函數編寫代碼時需要為其分配、釋放內存,難免使用到指針結構這種較為復雜的編碼技術,因而程序員大多數情況下使用自定義類的父類Delphi內建類較為方便。筆者將自定義類封裝存放在自建的單元文件 (Unit)中,引用其他單元的類時,需要在接口 (interface)部分的uses后添加其他單元的名字或者在implementation之后使用uses語句添加亦可,并且需要在private和public中聲明不同級別權限的類成員。這種編碼方式極大的降低了代碼的維護難度,使代碼結構清晰易讀,也提高了代碼的執行速度。

1.3 TBlobStream (數據流)與TFilestream (文件流)的存取機制

BLOB的含義是巨大的不定的二進制或者字符型數據,是在數據庫中存儲文檔 (比如Word、PDF等)、圖片以及可執行文件數據的常用數據類型[5]。在MS SQL Server 2000數據庫中,通常以Image表示BLOB字段,但是在數據庫操作中并不能像其他的Char或者Int等字段直接讀、寫文件,而是需要在程序代碼中將需要存儲的文件與BLOB字符串流相互轉換存取。

Delphi集成開發環境提供了可基于TStream (流)技術來實現對數據庫中BLOB數據的操作[6],這些數據一般來自文件、數據庫、OLE對象等,TStream都提供了統一、簡潔的方法進行讀寫。

2 Word文檔數據庫存、取功能的設計與實現

人力資源管理信息系統是典型的管理信息系統 (Management Information System,MIS),涉及員工信息、考勤、工資等多個系統模塊。其中文檔維護模塊中的管理Word總結、策劃類型的文檔,對企劃活動、業務分析進行信息共享,有利于用戶單位的企業文化推廣和市場動態的調查研究。Word數據表中的數據類型也多種多樣,如變長字符數據 (varchar)、時間數據 (datetime)、二進制數據 (image)等。由于Word文檔內容的特殊性,需要經過數據流轉換才能存儲到數據庫字段 (Image)中,因而在數據庫操作中對Image字段的存取是重點研究內容。以下就以Delphi自定義類編碼實現Word文檔數據庫的存、取功能,描述自定義類在數據庫操作中的應用效果。

2.1 建立存放Word文檔信息的表Doc_table

在人力資源系統數據庫中建立表Doc_Table,主要用來存儲Word文檔的編號和內容等信息,結構如表1所示。Word文檔在系統中存、取的程序流程圖如圖1和圖2所示。

表1 Doc_Table文檔信息結構表

圖1 “上傳 (存)”指令程序流程圖實例

圖2 “載入 (取)”指令程序流程圖實例

2.2 將對表Doc_table的所有操作封裝到自定義類中

第1步 在信息系統的Project下點擊菜單命令 “File→New→DataModule”,將該單元的文件名保存為 “DataMod_unit”,此時會自動生成類TDataMod=class(TDataModule)。DataModule是專門用于放置數據庫訪問組件的框架,它提供了一種數據集中的管理方法,使用其不僅增加了數據組件的重用性,而且讓程序結構更加明晰,使得不同的窗體使用同一張表時可以不必每個窗體都添加連接數據庫控件。在DataModule中添加控件并設置其屬性如表2所示。

第2步 編寫自定義類單元文件。單擊菜單命令“File→New→Uint”,并保存該單元文件名為 “Doc_Table_unit”。為完成該類的設計,需要在其中添加實現 “添加”、“預覽”、“修改”、“刪除”等函數和過程代碼。筆者著重介紹了Word文檔的讀、寫方法,以下是在 “Doc_Table_unit”中實現Doc_Table操作的主要過程和函數,其中必須先聲明的該類名為TDoctable=class(TObject),并在私有成員中聲明數據庫連接類Datamod:TDataMod。該單元文件中實現存、取功能的主要是GetDoc FromFile、WordId、RecUpdate、GetDoc 4個函數:GetDocFromFile函數將Word文件流讀入變量參數ReturnString字符串,再返回給GWordUnit(文檔維護界面單元)中的FileTemp;WordId函數在Doc_Table表中先插入新導入的Doc_Id(編號)和Doc_Blob(Word二進制內容);Doc_Id函數按條件查詢的方式調用RecUpdate更新其他字段的值信息;GetDoc函數中根據文檔編號讀出Word的數據流,可將其存放于本地臨時路徑Temppath,提交后該文件即可加載到主界面的Ole-Container容器。

表2 DataModule數據庫連接類中的控件及屬性

2.3 在文檔維護界面添加 “上傳”和 “載入”按鈕OnClick事件

完成數據表操作類的設計后,在新建的 “文檔維護界面”窗體DocMangementFrm中的添加操作控件并設置屬性,主要控件及屬性如表3所示。在DocMangementFrm中要調用類來實現 “上傳”(寫)、“載入”(讀)的功能,必須在DocMangementFrm的單元文件GWordUnit的uses中添加Doc_Table_unit類文件,并且在private中聲明該類的實例名為Doc_Table;同時在調用類的開始時實例化該類,使用結束后釋放該類的實例。由于在自定義類單元文件 “Doc_Table_unit”中已經將對文檔的所有操作進行了封裝,因此只需要在事件代碼中創建實例“Doctable=TDoctable.create”后調用其 “存、取”成員函數便可實現指令響應。

表3 窗體DocMangementFrm中的主要控件及屬性

3 運行結果

采用合理的數據結構和算法編碼是提高Word文檔在數據中的存取管理效率的關鍵因素,其中流技術是程序的核心,Delphi中創建的自定義類引導了程序的所有數據操作。圖3是在Delphi 7環境下調試通過的人力資源管理系統中文檔維護模塊運行的界面。雙擊Word詳情區便可瀏覽、編輯文檔全文信息,真正達到了工作文檔的高效管理、資源共享的目的。

圖3 人力資源管理系統中文檔維護模塊運行的界面 (實線圈定部分為存、取功能區)

4 結 語

Word文檔是目前辦公室應用越來越廣泛的通用文檔格式[7],企、事業單位中各種企劃、總結、通知等文檔需要歸檔供后續工作參考,因此對文檔進行電子化數據庫管理對提高工作質量和效率具有積極的現實意義。筆者提出的Delphi自定義類在Word文檔數據庫中的應用方法,能夠解決文檔在磁盤下直接存儲的不穩定性問題,提高了代碼的可復用性和執行效率,同時也減少了系統資源的耗費,并且對用戶指令反應迅速,交互性強,適于在具有大量數據的數據庫系統中廣泛應用。

[1]何紹木 .Delphi實現 Word文檔在數據庫中的存取 [J].微型電腦應用,2002,18(10):52-53.

[2]求是科技 .Delphi程序設計與開發技術大全 [M].北京:人民郵電出版社,2006,619-620.

[3]童愛紅,張綺,胡光斌 .Delphi 7應用教程 [M].北京:清華大學出版社,2004:2-3.

[4]劉俊,石林,徐守坤,朱正偉 .Delphi程序設計教程 [M].第2版 .北京:清華大學出版社,2008,337-338.

[5]楊洪雪 .基于BLOB類型的數據庫圖像存取技術 [J].數據庫及信息管理,2007,卷 (17):1231-1353.

[6]啟明工作室 .Delphi+SQL Server數據庫應用系統開發與實例 [M].北京:人民郵電出版社,2005,110-111.

[7]郭興吉.Word文檔流技術研究與實踐 [J].綿陽師范學院學報,2010,29(11):85-86.

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 欧美精品高清| 99ri国产在线| 国产精品自在拍首页视频8| 国产一级精品毛片基地| 国产精品成| 国产一级片网址| 日韩激情成人| 国内精自线i品一区202| 在线观看国产精品第一区免费| 性激烈欧美三级在线播放| 国产欧美日韩免费| 久久国产免费观看| a毛片在线| 波多野结衣中文字幕久久| 欧美亚洲国产精品第一页| 欧美视频二区| 2021天堂在线亚洲精品专区| 精品国产自在现线看久久| 国产亚洲欧美日韩在线一区| av在线5g无码天天| 国产激情无码一区二区三区免费| 亚洲无码熟妇人妻AV在线| 成人国产精品网站在线看| 99草精品视频| 一本大道视频精品人妻| 日韩无码真实干出血视频| 精品偷拍一区二区| 亚洲国产成人麻豆精品| 日韩视频福利| 免费a在线观看播放| 精品国产一区二区三区在线观看| 亚洲精品第五页| 国产欧美在线| 欧美中文字幕无线码视频| 人妻丰满熟妇av五码区| 视频二区亚洲精品| 国产农村妇女精品一二区| 四虎永久在线视频| 四虎综合网| 欧美精品另类| 国产永久无码观看在线| 国产亚洲精品精品精品| 为你提供最新久久精品久久综合| 波多野结衣一区二区三区四区| 女高中生自慰污污网站| 亚洲嫩模喷白浆| 国产主播在线观看| 久久成人免费| 99精品久久精品| 中文字幕久久波多野结衣| 日本亚洲国产一区二区三区| 18禁高潮出水呻吟娇喘蜜芽| 国产日本一线在线观看免费| 波多野结衣无码视频在线观看| 99在线视频网站| 夜夜操天天摸| 国产无码制服丝袜| 欧美激情综合一区二区| 手机精品视频在线观看免费| 精品国产三级在线观看| 欧美成人免费| 91精品国产一区| 婷婷综合色| 欧美精品v欧洲精品| 国产亚洲视频在线观看| 精品无码一区二区三区在线视频| 在线日韩一区二区| 国产精品手机在线播放| 亚洲av成人无码网站在线观看| 国产区免费| 免费国产高清视频| 国产麻豆va精品视频| 一本久道热中字伊人| 久久这里只有精品66| 国产精品久久久久鬼色| 久久婷婷六月| 曰韩人妻一区二区三区| 99re经典视频在线| 全午夜免费一级毛片| 亚洲欧洲天堂色AV| 欧美成人一区午夜福利在线| 在线看片中文字幕|