基于VB和ADO的數(shù)據(jù)庫二次開發(fā)-閘北水廠設(shè)備卡片系統(tǒng)_第1頁
基于VB和ADO的數(shù)據(jù)庫二次開發(fā)-閘北水廠設(shè)備卡片系統(tǒng)_第2頁
基于VB和ADO的數(shù)據(jù)庫二次開發(fā)-閘北水廠設(shè)備卡片系統(tǒng)_第3頁
基于VB和ADO的數(shù)據(jù)庫二次開發(fā)-閘北水廠設(shè)備卡片系統(tǒng)_第4頁
基于VB和ADO的數(shù)據(jù)庫二次開發(fā)-閘北水廠設(shè)備卡片系統(tǒng)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于VB和ADO的數(shù)據(jù)庫二次開發(fā)閘北水廠設(shè)備卡片系統(tǒng)摘要隨著科學技術(shù)的發(fā)展,特別是計算機技術(shù)的發(fā)展和普及。計算機已經(jīng)深入到我們的日常生活和工作中。從簡單的文字處理,到復雜的分子計算。可以說,我們已經(jīng)很難離開計算機的幫助了。計算機之所以如此應用廣泛,是其具有對信息進行超高速處理的能力。信息,作為計算機處理的對象,是一切的根本。沒有信息計算機將“無事可做“。數(shù)據(jù)庫,就是一個信息集。他對信息進行收集、整理、組織、存儲、維護、檢索、傳送等操作。數(shù)據(jù)庫的設(shè)計和開發(fā)及包括藝術(shù)有包括工程。理解用戶的需求,然后,把它們轉(zhuǎn)變?yōu)橛行У臄?shù)據(jù)庫設(shè)計是一個藝術(shù)過程。把設(shè)計轉(zhuǎn)變?yōu)閷嶋H的數(shù)據(jù)庫,并且這些數(shù)據(jù)庫帶有功能完備、高效能的應用,是一個工程過程。我廠早已完成了生產(chǎn)自動化、網(wǎng)絡(luò)化、信息化的改造。實現(xiàn)了生產(chǎn)數(shù)據(jù)實時采集和監(jiān)控,設(shè)備數(shù)據(jù)信息存檔,辦公流程電子網(wǎng)絡(luò)化等功能。本文以“設(shè)備卡片管理系統(tǒng)”的開發(fā)實現(xiàn)為例,論述了如何對現(xiàn)有生產(chǎn)系統(tǒng)的數(shù)據(jù)庫進行分析,嘗試在原有數(shù)據(jù)庫結(jié)構(gòu)的基礎(chǔ)上,開發(fā)出新的應用功能,實現(xiàn)功能的加強和彌補。從而發(fā)掘提高現(xiàn)有數(shù)據(jù)庫的價值和潛力?!霸O(shè)備卡片管理系統(tǒng)”將在不破壞原有數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)的完整性和不影響原有軟件系統(tǒng)正常運行的情況下,實現(xiàn)對數(shù)據(jù)的再組合和各種數(shù)據(jù)操作。關(guān)鍵詞:VB(VisualBasic),ADO(ActiveX數(shù)據(jù)對象),數(shù)據(jù)庫(SQLSERVER),SQL語句,設(shè)備管理系統(tǒng),

目錄第1章引言 11.1系統(tǒng)開發(fā)的目的與定位 11.2開發(fā)工具的選擇 11.3開發(fā)環(huán)境及運行環(huán)境 2第2章數(shù)據(jù)庫概論 32.1數(shù)據(jù)庫技術(shù)的發(fā)展 32.1.1數(shù)據(jù)庫的發(fā)展 32.1.2數(shù)據(jù)庫技術(shù) 32.2數(shù)據(jù)庫理論基礎(chǔ) 42.2.1數(shù)據(jù)庫體系結(jié)構(gòu) 42.2.2數(shù)據(jù)的獨立性 42.2.3范式 52.3SQL語言基礎(chǔ) 62.3.1SQL簡介 62.3.2SQL查詢 62.3.3SQL數(shù)據(jù)更新 7第3章現(xiàn)有數(shù)據(jù)庫系統(tǒng)的介紹與分析 83.1體系結(jié)構(gòu) 83.1.1兩層(多層)客戶機/服務(wù)器結(jié)構(gòu)(Client/Server) 83.1.2 瀏覽器/服務(wù)器結(jié)構(gòu)(Browser/Server) 83.2閘北水廠生產(chǎn)系統(tǒng)介紹與分析 93.2.1生產(chǎn)數(shù)據(jù)庫系統(tǒng) 93.2.2 設(shè)備、辦公及其他數(shù)據(jù)庫系統(tǒng) 103.3《設(shè)備管理系統(tǒng)》詳細分析 103.3.1《設(shè)備管理系統(tǒng)》體系架構(gòu) 103.3.2主要功能介紹 113.3.3實際使用中的不足 11第4章設(shè)備卡片管理系統(tǒng)的設(shè)計與實現(xiàn) 124.1系統(tǒng)功能設(shè)計 124.2系統(tǒng)概要設(shè)計 134.2.1系統(tǒng)技術(shù)結(jié)構(gòu) 134.2.2 數(shù)據(jù)庫開發(fā)與改造 134.3系統(tǒng)應用程序的具體實現(xiàn) 194.3.1系統(tǒng)主要窗體模塊的組成 194.3.2設(shè)備查詢(MDI子窗體)和更改查詢(MDI子窗體)的實現(xiàn) 194.3.3臺帳信息窗體和更改記錄窗體的實現(xiàn) 224.3.4登入界面和其他功能的實現(xiàn) 26第5章總結(jié) 28參考文獻 29致謝 29附屬光盤(程序源代碼,數(shù)據(jù)庫,SQL程序,相關(guān)文檔資料)第1章引言1.1系統(tǒng)開發(fā)的目的與定位對現(xiàn)有數(shù)據(jù)庫進行二次開發(fā)的目的是,實現(xiàn)新的應用功能和對原有系統(tǒng)的不足進行彌補。但這一切都是要建立在不影響、不破壞原由系統(tǒng)的原則下的。所以在開發(fā)新的系統(tǒng)時,要以保障數(shù)據(jù)庫的完全性和完整性為第一原則。在此基礎(chǔ)上實現(xiàn)對數(shù)據(jù)庫的二次開發(fā)。初次對生產(chǎn)數(shù)據(jù)庫的開發(fā),先考慮其可行性和完整性。先以單數(shù)據(jù)庫系統(tǒng)、“兩層客戶/服務(wù)器體系結(jié)構(gòu)”為開發(fā)標準,以工作中實際出現(xiàn)的問題和不足為切入點,系統(tǒng)功能以使用方便、功能實用為主。作為以后開發(fā)多數(shù)據(jù)庫、“多層客戶/服務(wù)器體系結(jié)構(gòu)”的大型系統(tǒng)的基礎(chǔ)。1.2開發(fā)工具的選擇自Java誕生以來,隨著Internet技術(shù)的普及和應用需求的變化,以第四代語言為主的應用開發(fā)產(chǎn)品發(fā)生了較大的變化,它們不僅已成為人們開發(fā)應用的開發(fā)工具,而且很多產(chǎn)品已發(fā)展成為一種強有力的應用開發(fā)環(huán)境。這些新型的開發(fā)工具通常以一種集成軟件包的形式提供給開發(fā)人員,被稱為Studio(工作室)或Suite(程序組)。例如,微軟的VisualStudio6.0,Borland公司的Delphi6.0等數(shù)據(jù)庫輔助開發(fā)工具。現(xiàn)在,市場上可以選購的應用開發(fā)產(chǎn)品很多,流行的也有數(shù)十種。目前在我國市場上最為流行、使用最多、最為先進的可用作企業(yè)級開發(fā)工具的產(chǎn)品有:Microsoft公司的VisualBasic6.0版Microsoft公司的VisualC++6.0版Borland公司的Delphi6.0版在目前市場上這些眾多的程序開發(fā)工具中,有些強調(diào)程語言的彈性與執(zhí)行效率;有些則偏重于可視化程序開發(fā)工具所帶來的便利性與效率的得高,各有各的優(yōu)點和特色,也滿足了不同用戶的需求。然而,語言的彈性和工具的便利性是密不可分的,只有便利的工具,卻沒有彈性的語言作支持,許多特殊化的處理動作必需要耗費數(shù)倍的工夫來處理,使得原來所標榜的效率提高的優(yōu)點失去了作用;相反,如果只強調(diào)程語言的彈性,卻沒有便利的工具作配合,會使一些即使非常簡單的界面處理動作,也會嚴重地浪費程序設(shè)計師的寶貴時間。微軟公司的VisualBasic開發(fā)系統(tǒng)6.0版,是開發(fā)效率極高的用于創(chuàng)建高性能組件和應用程序的工具。VisualBasic6.0可支持開發(fā)人員基于客戶端或服務(wù)器端創(chuàng)建優(yōu)秀的應用程序,或是在分布式n層環(huán)境下操作。VisualBasic6.0提供了一組完整的工具,用于將數(shù)據(jù)庫與任意應用程序進行集成。與數(shù)據(jù)庫有關(guān)的特征是設(shè)計了創(chuàng)建和修改MicrosoftSQLServer、Oracle7.3以及AS/400數(shù)據(jù)庫的工具。VisualBasic6.0對數(shù)據(jù)的訪問具有以下的特性:統(tǒng)一的數(shù)據(jù)訪問,集成了ADO/OLE支持。將可視化的數(shù)據(jù)庫工具集成到了VisualBasic環(huán)境中。數(shù)據(jù)環(huán)境設(shè)計器(DataEnvironmentDesigner)工具可實現(xiàn)基于ADO的數(shù)據(jù)訪問組件。具有創(chuàng)建數(shù)據(jù)源的功能??蓜?chuàng)建OLEDB提供者(OLEDBProvider)??煞奖愕剡M行機器間和層次間的遠程數(shù)據(jù)訪問。1.3開發(fā)環(huán)境及運行環(huán)境開發(fā)環(huán)境:1#號機: Intel?Pentium?42.66GHz,512M內(nèi)存,40G硬盤 Microsoft?Windows?XP Microsoft?VisualBasic6.02#號機:DELL服務(wù)器PowerEdge840 Microsoft?Windows?2003Microsoft?SQLServer2000(SP4)運行環(huán)境: 最低配置:Intel?Pentium?2及以上處理器,64M以上內(nèi)存,50M以上硬盤 Microsoft?Windows?9X/NT/XP操作系統(tǒng) 800*600或以上的屏幕分辨率建議配置:Intel?Pentium?3及以上處理器,128M以上內(nèi)存,100M以上硬盤 Microsoft?Windows?9X/NT/XP操作系統(tǒng) 1024*768或以上的屏幕分辨率

第2章數(shù)據(jù)庫概論2.1數(shù)據(jù)庫技術(shù)的發(fā)展2.1.1數(shù)據(jù)庫的發(fā)展數(shù)據(jù)管理技術(shù)的發(fā)展,與硬件(主要是外存)、軟件、計算機應用的范圍有密切的聯(lián)系。數(shù)據(jù)管理技術(shù)的發(fā)展經(jīng)過三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫階段。人工管理階段和文件系統(tǒng)階段都有著相當多的缺陷,諸如數(shù)據(jù)冗余性,數(shù)據(jù)不一致性以及數(shù)據(jù)聯(lián)系弱等等。也正是由于這些原因,促使人們研究新的數(shù)據(jù)管理技術(shù),從而產(chǎn)生了數(shù)據(jù)庫技術(shù)。20世紀60年代末發(fā)生的三件大事,層次模型IMS系統(tǒng)的推出、關(guān)于網(wǎng)狀模型DBTG報告的發(fā)表以及關(guān)于關(guān)系模型論文的連續(xù)發(fā)表標志著數(shù)據(jù)管理技術(shù)進入數(shù)據(jù)庫階段。進入70年代以后,數(shù)據(jù)庫技術(shù)得到迅速發(fā)展,開發(fā)了許多有效的產(chǎn)品并投入運行。數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的缺陷,提供了對數(shù)據(jù)更高級更有效的管理。當進入數(shù)據(jù)庫階段后,隨著數(shù)據(jù)管理規(guī)模一再擴大,數(shù)據(jù)量急劇增加,為了提高效率,開始時,人們只是對文件系統(tǒng)加以擴充,在應用文件中建立了許多輔助索引,形成倒排文件系統(tǒng)。但這并不能最終解決問題。在20世紀60年代末,磁盤技術(shù)取得重要進展,具有數(shù)百兆容量和快速存取的磁盤陸續(xù)進入市場,成本也不高,為數(shù)據(jù)庫技術(shù)的產(chǎn)生提供了良好的物質(zhì)條件。2.1.2數(shù)據(jù)庫技術(shù)從文件系統(tǒng)發(fā)展到數(shù)據(jù)庫系統(tǒng)是信息處理領(lǐng)域的一個重大變化。在文件系統(tǒng)階段,人們關(guān)注的中心問題是系統(tǒng)功能的設(shè)計,因而程序設(shè)計處于主導地位,數(shù)據(jù)只起著服從程序需要的作用。在數(shù)據(jù)庫方式下,信息處理觀念已為新體系所取代,數(shù)據(jù)占據(jù)了中心位置。數(shù)據(jù)結(jié)構(gòu)的設(shè)計成為信息系統(tǒng)首先關(guān)心的問題,而利用這些數(shù)據(jù)的應用程序設(shè)計則退居到以既定的數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的外圍地位。目前世界上已有數(shù)百萬個數(shù)據(jù)庫系統(tǒng)在運行,其應用已經(jīng)深入到人類社會生活的各個領(lǐng)域,從企業(yè)管理、銀行業(yè)務(wù)、資源分配、經(jīng)濟預測一直到信息檢索、檔案管理、普查統(tǒng)計等。并在通信網(wǎng)絡(luò)基礎(chǔ)上,建立了許多國際性的聯(lián)機檢索系統(tǒng)。我國20世紀90年代初在全國范圍內(nèi)裝備了12個以數(shù)據(jù)庫技術(shù)為基礎(chǔ)的大型計算機系統(tǒng),這些系分布在郵電、計委、銀行、電力、鐵路、氣象、民航、情報、公安、軍事、航天和財稅等行業(yè)。數(shù)據(jù)庫技術(shù)還在不斷的發(fā)展,并且不斷地與其它計算機技術(shù)相互滲透。數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)通信技術(shù)相結(jié)合,產(chǎn)生了分布式數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)相結(jié)合,產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫技術(shù)中有四個名詞,其概念應該分清。(1)數(shù)據(jù)庫(database,DB):DB是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的數(shù)據(jù)獨立性。(2)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,DBMS):DBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應用程序提供訪問DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控制。DBMS總是基于某種數(shù)據(jù)模型,可以分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮虳BMS。(3)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,DBS):DBS是實現(xiàn)有組織地、動態(tài)地存儲大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問的計算機軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計算機系統(tǒng)。(4)數(shù)據(jù)庫技術(shù):這是一門研究數(shù)據(jù)庫的結(jié)構(gòu)、存儲、管理和使用的軟件學科。數(shù)據(jù)庫技術(shù)是操作系統(tǒng)的文件系統(tǒng)基礎(chǔ)上發(fā)展起來的。而DBMS本身要在操作系統(tǒng)的支持下才能工作。數(shù)據(jù)庫不僅用到數(shù)據(jù)結(jié)構(gòu)的知識,而且豐富了數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。在關(guān)系數(shù)據(jù)庫中要用到集合論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫技術(shù)是一門綜合性較強的學科。2.2數(shù)據(jù)庫理論基礎(chǔ)2.2.1數(shù)據(jù)庫體系結(jié)構(gòu)數(shù)據(jù)庫的體系結(jié)構(gòu)分三級:內(nèi)部級(internal),概念級(conceptual)和外部級(external)。這個三級結(jié)構(gòu)有時也稱為“三級模式結(jié)構(gòu)”,或“數(shù)據(jù)抽象的三個級別”,最早是在1971年通過的DBTG報告中提出,后來收入在1975年的美國ANSI/SPARC報告中。雖然現(xiàn)在DBMS的產(chǎn)品多種多樣,在不同的操作系統(tǒng)支持下工作,但是大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級模式的結(jié)構(gòu)特征。從某個角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(dataview)。外部級最接近用戶,是單個用戶所能看到的數(shù)據(jù)特性。單個用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。概念級涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局數(shù)據(jù)視圖的描述稱為“概念模式”。內(nèi)部級最接近于物理存儲設(shè)備,涉及到實際數(shù)據(jù)存儲的結(jié)構(gòu)。物理存儲數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。數(shù)據(jù)庫的三級模式結(jié)構(gòu)是數(shù)據(jù)的三個抽象級別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計算機中的表示和存儲,這樣就減輕了用戶使用系統(tǒng)的負擔。三級結(jié)構(gòu)之間往往差別很大,為了實現(xiàn)這三個抽象級別的聯(lián)系和轉(zhuǎn)換,DBMS在三級結(jié)構(gòu)之間提供兩個層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡稱。2.2.2數(shù)據(jù)的獨立性由于數(shù)據(jù)庫系統(tǒng)采用三級模式結(jié)構(gòu),因此系統(tǒng)具有數(shù)據(jù)獨立性的特點。在數(shù)據(jù)庫技術(shù)中,數(shù)據(jù)獨立性是指應用程序和數(shù)據(jù)之間相互獨立,不受影響。數(shù)據(jù)獨立性分成物理數(shù)據(jù)獨立性和邏輯數(shù)據(jù)獨立性兩級。(1)物理數(shù)據(jù)獨立性如果數(shù)據(jù)庫的內(nèi)模式要進行修改,即數(shù)據(jù)庫的存儲設(shè)備和存儲方法有所變化,那么模式/內(nèi)模式映象也要進行相當?shù)男薷?,使概念模式盡可能保持不變。也就是對內(nèi)模式的修改盡量不影響概念模式,當然,對于外模式和應用程序的影響更小,這樣,我們稱數(shù)據(jù)庫達到了物理數(shù)據(jù)獨立性。(2)邏輯數(shù)據(jù)獨立性如果數(shù)據(jù)庫的概念模式要進行修改,譬如增加記錄類型或增加數(shù)據(jù)項,那么外模式/模式映象也要進行相應的修改,使外模式盡可能保持不變。也就是對概念模式的修改盡量不影響外模式和應用程序,這樣,我們稱數(shù)據(jù)庫達到了邏輯數(shù)據(jù)獨立性?,F(xiàn)有關(guān)系系統(tǒng)產(chǎn)品均提供了較高的物理獨立性,而對邏輯獨立性的支持尚有欠缺,例如,對外模式的數(shù)據(jù)更新受到限制等。2.2.3范式建立起一個良好的數(shù)據(jù)指標體系,是建立數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫的最重要的一環(huán)。一個良好的數(shù)據(jù)指標體系是建立DB的必要條件,但不是充分條件。我們完全可以認為所建指標體系中的一個指標類就是關(guān)系數(shù)據(jù)庫中的一個基本表,而這個指標類下面的一個個具體指標就是這個基本表中的一個字段。但如果直接按照這種方式建庫顯然還不能算最佳。對于指標體系中數(shù)據(jù)的結(jié)構(gòu)在建庫前還必須進行規(guī)范化的重新組織。在數(shù)據(jù)的規(guī)范化表達中,一般將一組相互關(guān)聯(lián)的數(shù)據(jù)稱為一個關(guān)系(relation),而在這個關(guān)系下的每個數(shù)據(jù)指標項則被稱為數(shù)據(jù)元素(dataelement),這種關(guān)系落實到具體數(shù)據(jù)庫上就是基本表,而數(shù)據(jù)元素就是基本表中的一個字段(field)。規(guī)范化表達還規(guī)定在每一個基本表中必須定義一個數(shù)據(jù)元素為關(guān)鍵字(key),它可以唯一地標識出該表中其它相關(guān)的數(shù)據(jù)元素。在規(guī)范化理論中表是二維的,它有如下四個性質(zhì):在表中的任意一列上,數(shù)據(jù)項應屬于同一個屬性。表中所有行都是不相同的,不允許有重復組項出現(xiàn)。在表中,行的順序無關(guān)緊要。在表中,列的順序無關(guān)緊要,但不能重復。在對表的形式進行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動滿足一、二、三、四范式,滿足第四范式的數(shù)據(jù)結(jié)構(gòu)自動滿足第一、二、三范式,……,依此類推。第一范式(firstnormalform,簡稱1stNF)就是指在同一表中沒有重復項出現(xiàn),如果有則應將重復項去掉。這個去掉重復項的過程就稱之為規(guī)范化處理。在本文所討論的開發(fā)方法里,1stNF實際上是沒有什么意義的。因為我們按規(guī)范化建立的指標體系和表的過程都自動保證了所有表都滿足1stNF。第二范式(secondnormalform,簡稱2ndNF)是指每個表必須有一個(而且僅一個)數(shù)據(jù)元素為主關(guān)鍵字(primarykey),其它數(shù)據(jù)元素與主關(guān)鍵字一一對應。例如,在圖l9.7中如果我們將合同號定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個合同記錄的合同號,就可以唯一地在同一行中找到該合同的任何一項具體信息。通常我們稱這種關(guān)系為函數(shù)依賴(functionaldepEndence)關(guān)系。即表中其它數(shù)據(jù)元素都依賴于主關(guān)鍵字,或稱該數(shù)據(jù)元素唯一地被主關(guān)鍵字所標識。第三范式(thirdnormalform,簡稱3rdNF)就是指表中的所有數(shù)據(jù)元素不但要能夠唯一地被主關(guān)鍵字所標識,而且它們之間還必須相互獨立,不存在其它的函數(shù)關(guān)系。也就是說對于一個滿足了2ndNF的數(shù)據(jù)結(jié)構(gòu)來說,表中有可能存在某些數(shù)據(jù)元素依賴于其它非關(guān)鍵宇數(shù)據(jù)元素的現(xiàn)象,必須加以消除。為防止數(shù)據(jù)庫出現(xiàn)更新異常、插入異常、刪除異常、數(shù)據(jù)冗余太大等現(xiàn)象,關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進行數(shù)據(jù)庫設(shè)計。2.3SQL語言基礎(chǔ)2.3.1SQL簡介用戶對數(shù)據(jù)庫的使用,是通過數(shù)據(jù)庫管理系統(tǒng)提供的語言來實現(xiàn)的。不同的數(shù)據(jù)庫管理系統(tǒng)提供不同的數(shù)據(jù)庫語言。關(guān)系數(shù)據(jù)庫管理系統(tǒng)幾乎都提供關(guān)系數(shù)據(jù)庫標準語言——SQL。SQL的全稱是StructuredQueryLanguage,即結(jié)構(gòu)化查詢語言。SQL語句可以從關(guān)系數(shù)據(jù)庫中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采用SQL語言作為關(guān)系數(shù)據(jù)庫系統(tǒng)的標準語言,后被國際化標準組織(ISO)采納為國際標準。SQL語言使用方便、功能豐富、簡潔易學,是操作數(shù)據(jù)庫的工業(yè)標準語言,得到廣泛地應用。例如關(guān)系數(shù)據(jù)庫產(chǎn)品DB2、ORACLE等都實現(xiàn)了SQL語言。同時,其它數(shù)據(jù)庫產(chǎn)品廠家也紛紛推出各自的支持SQL的軟件或者與SQL的接口軟件。這樣SQL語言很快被整個計算機界認可。SQL語言是一種非過程化語言,它一次處理一個記錄集合,對數(shù)據(jù)提供自動導航。SQL語言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對單個記錄進行操作。SQL語言不要求用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對指定數(shù)據(jù)存取的最快速手段。當設(shè)計者在關(guān)系表上定義了索引時,系統(tǒng)會自動利用索引進行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細節(jié)。SQL語言可以完成許多功能,例如:●查詢數(shù)據(jù)●在數(shù)據(jù)庫表格中插入、修改和刪除記錄●建立、修改和刪除數(shù)據(jù)對象●控制對數(shù)據(jù)和數(shù)據(jù)對象的存取●確保數(shù)據(jù)庫的一致性和完整性等2.3.2SQL查詢數(shù)據(jù)查詢是關(guān)系運算理論在SQL語言中的主要體現(xiàn),SELECT語句是SQL查詢的基本語句,當我們在對一個數(shù)據(jù)庫進各種各樣的操作時,使用的最多的就是數(shù)據(jù)查詢,在以SQL為基礎(chǔ)的關(guān)系數(shù)據(jù)庫中,使用的最多的就是SELECT查詢語句。SELECT語句的完整句法如下:SELECT目標表的列名或列表達式序列FROM基本表和(或)視圖序列[WHERE行條件表達式][GROUPBY列名序列][HAVING組條件表達式][ORDERBY列名[ASC│DEAC]…]我在SELECT語句中還使用了大量的保留字和通配符以進行各種各樣的條件查詢。在系統(tǒng)中有大量的查詢按鈕,其使用了大量的查詢語句,而且這些查詢語句大部分使用的是模糊查詢,所以大量的使用了模式匹配符LIKE(判斷值是否與指定的字符通配格式相符)。在包含LIKE的查詢語句中可以使用兩個通配符:%(百分號):與零個或多個字符組成的字符串匹配;_(下劃線):與單個字符匹配。系統(tǒng)中的條件判斷往往包含多個條件,這時就需要使用邏輯運算符NOT、AND、OR(用于多條件的邏輯連接),謂詞ALL以及保留字DISTINCT等等。2.3.3SQL數(shù)據(jù)更新使用數(shù)據(jù)庫的目的是為了有效地管理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個功能。在本系統(tǒng)中就大量地使用了數(shù)據(jù)插入、刪除和修改這三種操作,現(xiàn)做一個簡單地介紹?!駭?shù)據(jù)插入往數(shù)據(jù)庫的基本表中插入數(shù)據(jù)使用的是INSERT語句,其方式有兩種:一種是元組值的插入,另一種是查詢結(jié)果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:INSERTINTO基本表名(列表名)VALUES(元組值)●數(shù)據(jù)刪除往數(shù)據(jù)庫的基本表中刪除數(shù)據(jù)使用的是DELETE語句,其句法如下:DELETEFROM基本表名[WHERE條件表達式]在些作一點說明,刪除語句實際上是“SELECT*FROM基本表名[WHERE條件表達式]”和DELETE操作的結(jié)合,每找到一個元組,就把它刪除。此外,DELETE語句只能從一個基本表中刪除元組,WHERE子句中條件可以嵌套,也可以是來自幾個基本表的復合條件。●數(shù)據(jù)修改當需要修改基本表中元組的某些列值時,可以用UPDATE語句實現(xiàn),其句法如下:UPDATE基本表名SET列名=值表達式[,列名=值表達式…][WHERE條件表達式]在本系統(tǒng)中我采用的是ADO組件來對數(shù)據(jù)庫進行操作。

第3章現(xiàn)有數(shù)據(jù)庫系統(tǒng)的介紹與分析3.1體系結(jié)構(gòu)3.1.1兩層(多層)客戶機/服務(wù)器結(jié)構(gòu)(Client/Server)將針對具體數(shù)據(jù)庫的訪問邏輯與客戶應用程序分離開,并將那些數(shù)據(jù)庫訪問邏輯放在服務(wù)器上,這是一種趨勢。在這種發(fā)展趨勢中,兩層應用程序代表了第一步。通常,完成這種分離所采用的方法是:用存儲過程完成數(shù)據(jù)訪問服務(wù),在服務(wù)器上針對數(shù)據(jù)庫來施行這些存儲過程。這使得程序代碼的維護、升級以及日常管理變得更為輕松,這是因為這些程序代碼只保存在服務(wù)器上,而非在每一臺客戶機上保留這些程序代碼。除此以外,DBMS(databasemanagementsystem,數(shù)據(jù)管理管理系統(tǒng))在支持多個用戶時,可以提供所需要的集中式功能。C/S結(jié)構(gòu)圖如下:圖3-1客戶/服務(wù)器模式瀏覽器/服務(wù)器結(jié)構(gòu)(Browser/Server)B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),就是只安裝維護一個服務(wù)器(Server),而客戶端采用瀏覽器(Browse)運行軟件。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化和改進。主要利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合多種Script語言(VBScript、JavaScript…)和ActiveX技術(shù),是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。在B/S體系結(jié)構(gòu)系統(tǒng)中,用戶通過瀏覽器向分布在網(wǎng)絡(luò)上的許多服務(wù)器發(fā)出請求,服務(wù)器對瀏覽器的請求進行處理,將用戶所需信息返回到瀏覽器。而其余如數(shù)據(jù)請求、加工、結(jié)果返回以及動態(tài)網(wǎng)頁生成、對數(shù)據(jù)庫的訪問和應用程序的執(zhí)行等工作全部由WebServer完成。隨著Windows將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)已成為當今應用軟件的首選體系結(jié)構(gòu)。B/S結(jié)構(gòu)的主要特點是分布性強、維護方便、開發(fā)簡單且共享性強、總體擁有成本低。但數(shù)據(jù)安全性問題、對服務(wù)器要求過高、數(shù)據(jù)傳輸速度慢、軟件的個性化特點明顯降低,這些缺點是有目共睹的,難以實現(xiàn)傳統(tǒng)模式下的特殊功能要求。B/S結(jié)構(gòu)圖如下:圖3-2游覽器/服務(wù)器模式3.2閘北水廠生產(chǎn)系統(tǒng)介紹與分析3.2.1生產(chǎn)數(shù)據(jù)庫系統(tǒng)閘北水廠生產(chǎn)自動化監(jiān)控系統(tǒng),由上海三高計算機中心有限公司開發(fā)實現(xiàn)。其系統(tǒng)所屬數(shù)據(jù)庫也是全廠最大最重要的數(shù)據(jù)庫系統(tǒng)。這是一個C/S和B/S綜合結(jié)構(gòu)的系統(tǒng)。因為系統(tǒng)涉及范圍廣,數(shù)據(jù)采集頻率高,所以其數(shù)據(jù)庫規(guī)模巨大。每天生成和采集的數(shù)據(jù)超過1000萬條。其主要功能:建立統(tǒng)一的生產(chǎn)與質(zhì)量信息庫;完整匯集生產(chǎn)質(zhì)量數(shù)據(jù)信息;全面實時地反映全廠的生產(chǎn)質(zhì)量狀況;建立實時數(shù)據(jù)和歷史數(shù)據(jù)分析系統(tǒng);建立水廠統(tǒng)一的生產(chǎn)管理指揮機構(gòu);統(tǒng)一協(xié)調(diào)制水、出水的有效運行。數(shù)據(jù)工作流程,是由OPC服務(wù)器從各個數(shù)據(jù)采集終端收集數(shù)據(jù)。然后通過局域網(wǎng)傳送到數(shù)據(jù)中心服務(wù)器。同時也包含人工填報的生產(chǎn)數(shù)據(jù)。整個系統(tǒng)不但包含了實時數(shù)據(jù),也包含歷史數(shù)據(jù),除了強調(diào)數(shù)據(jù)實時性而且強調(diào)歷史數(shù)據(jù)的分析。整合了完整的生產(chǎn)數(shù)據(jù),并經(jīng)過科學的加工使之成為分析知道生產(chǎn)運行的信息。設(shè)備、辦公及其他數(shù)據(jù)庫系統(tǒng)《設(shè)備管理系統(tǒng)》和《辦公自動化系統(tǒng)》都是由上海金仕達多媒體有限公司開發(fā)制作的。兩個系統(tǒng)都是采用相似的B/S/D(Brower/Server/Database)三層架構(gòu),利用了成熟的WWW瀏覽器技術(shù),結(jié)合多種Script語言(VBScript、JavaScript…)和ActiveX技術(shù)。以SQLSERVER2000作為數(shù)據(jù)庫平臺。實現(xiàn)各種功能。這兩個系統(tǒng)都有各自獨立的數(shù)據(jù)庫,數(shù)據(jù)庫規(guī)模中等。本文將在下一節(jié)中,詳細介紹分析《設(shè)備管理系統(tǒng)》。其他數(shù)據(jù)庫系統(tǒng)還有,浪潮財務(wù),桌面提醒(AM),門禁系統(tǒng),等數(shù)據(jù)庫。他們均采用C/S結(jié)構(gòu)。因為功能單一,所以他們的數(shù)據(jù)庫規(guī)模較小,結(jié)構(gòu)較簡單。3.3《設(shè)備管理系統(tǒng)》詳細分析3.3.1《設(shè)備管理系統(tǒng)》體系架構(gòu)系統(tǒng)采用B/S/D(Brower/Server/Database)三層架構(gòu),客戶端無需安裝任何軟件,只需要打開IE游覽器登陸系統(tǒng)后就可以進行各種操作。系統(tǒng)的各個業(yè)務(wù)邏輯處理都在服務(wù)器端,而所有的數(shù)據(jù)則由服務(wù)器處理后存儲在大型關(guān)系數(shù)據(jù)庫里。整個系統(tǒng)構(gòu)架如下:圖3-3系統(tǒng)構(gòu)架3.3.2主要功能介紹《設(shè)備管理系統(tǒng)》的主要實現(xiàn)的功能是:管理設(shè)備整個生命周期的各種資料,對于設(shè)備保養(yǎng)等各需要多個部門共同處理的環(huán)節(jié)能提供流程的自動流轉(zhuǎn),能以消息提醒的方式告訴流程下一環(huán)節(jié)的人他該做的事,能提供一些自動提醒,提高設(shè)備管理的自動化水平;用戶還可以靈活方便的增加設(shè)備的類別,增加新的設(shè)備,增加新的檢修報表;整個系統(tǒng)具有很高的靈活性和擴展性,不僅僅只是滿足當前設(shè)備管理的需要,更要能適應將來新設(shè)備出現(xiàn)的新要求。設(shè)備管理系統(tǒng)的功能規(guī)劃如下圖:圖3-3《設(shè)備管理系統(tǒng)》主要功能3.3.3實際使用中的不足《設(shè)備管理系統(tǒng)》是個一功能強大、范圍全面的軟件系統(tǒng)。但正因為如此,其使用管理起來就比較復雜,流程配置相當繁復。比如設(shè)備更改記錄。在《設(shè)備管理系統(tǒng)》中分成“年度檢修”、“月度維護”、“分月計劃”、“報修單”四個部分。而且每個部分都要獨立填寫表格,并且必須通過審批流程后,才能歸檔保存。查詢起來也比較復雜。正因為如此,員工在實際使用過程中,多次抱怨系統(tǒng)復雜使用不便。特別是對一些年紀較大,對計算機操作不熟練的老員工來說,更是困難非常。加上B/S網(wǎng)絡(luò)延遲方面的一些缺點,造成《設(shè)備管理系統(tǒng)》使用率不高,有些員工更喜歡使用原來的設(shè)備卡片表格。

第4章《設(shè)備卡片管理系統(tǒng)》的設(shè)計與實現(xiàn)本章主要論述《設(shè)備卡片管理系統(tǒng)》的具體實現(xiàn)過程。因為系統(tǒng)程序量巨大,不重復的代碼就超過2千行。因篇幅有限,不能一一列出,只列關(guān)鍵部分的代碼。程序的所有原代碼和相關(guān)數(shù)據(jù)庫程序,都保存在本文最后附屬的光盤中。讀者可對應程序原代碼,配合觀看本文。4.1系統(tǒng)功能設(shè)計《設(shè)備卡片管理系統(tǒng)》是在《設(shè)備管理系統(tǒng)》原由數(shù)據(jù)庫基礎(chǔ)上改進開發(fā)的。主要是改進《設(shè)備管理系統(tǒng)》的一些不足之處。(相關(guān)內(nèi)容見3.3.3節(jié))同時,也作為對現(xiàn)有數(shù)據(jù)庫二次開發(fā)的技術(shù)嘗試。系統(tǒng)主要實現(xiàn)的功能:設(shè)備臺帳的條件查詢;設(shè)備臺帳的數(shù)據(jù)操作;更改記錄的條件查詢;更改記錄的數(shù)據(jù)操作;更改記錄的自動收集與同步更新;設(shè)備卡片功能的實現(xiàn)。圖4-1系統(tǒng)功能結(jié)構(gòu)圖4.2系統(tǒng)概要設(shè)計4.2.1系統(tǒng)技術(shù)結(jié)構(gòu)《設(shè)備卡片管理系統(tǒng)》采用C/S結(jié)構(gòu)體系,以VisualBasic6.0為程序開發(fā)工具,以SQLServer2000為數(shù)據(jù)庫平臺,在原有的數(shù)據(jù)庫基礎(chǔ)上添加新的表、存儲過程和觸發(fā)器,以實現(xiàn)新的功能。程序采用采用ADO技術(shù)和組件,來實現(xiàn)對數(shù)據(jù)庫的訪問和操作。ADO數(shù)據(jù)對象(ActiveDataObjects)實際是一種提供訪問各種數(shù)據(jù)類型的鏈接機制。ADO設(shè)計為一種極簡單的格式,通過ODBC的方法同數(shù)據(jù)庫接口中,可以使用任何一種ODBC數(shù)據(jù)源,即不止適合于SQLServer、Oracle、Access等數(shù)據(jù)庫應用程序,也適合于Excel表格、文本文件、圖形文件和無格式的數(shù)據(jù)文件。ADO是基于OLE-DB之上的技術(shù),因此ADO通過其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問接口方法。ADO使您的客戶端應用程序能夠通過OLEDB提供訪問和操作在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ADO支持用于建立C/S和Web的應用程序的主要功能。其主要優(yōu)點是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ADO同時具有遠程數(shù)據(jù)服務(wù)(RDS)功能,通過RDS可以在一次往返過程中實現(xiàn)將數(shù)據(jù)從服務(wù)器移動到客戶端應用程序和Web頁、在客戶端對數(shù)據(jù)進行處然后將更新結(jié)果返回服務(wù)器的操作。數(shù)據(jù)庫開發(fā)與改造(1)所要涉及數(shù)據(jù)庫中原由的數(shù)據(jù)表設(shè)備臺帳相關(guān)的數(shù)據(jù)表:DEV_ACCOUNT;DEV_ACCOUNT_CONFIG;DEV_ACCOUNT_DESCRIBE;DEV_ACCOUNT_HISTORY;DEV_ACCOUNT_TEMPLET;他們的結(jié)構(gòu)圖如下:圖4-2臺帳數(shù)據(jù)表結(jié)構(gòu)更改記錄相關(guān)數(shù)據(jù)表:DEV_REPAIR_PLAN_DETAILDEV_REPAIR_RUSH他們的結(jié)構(gòu)圖如下:圖4-3更改記錄數(shù)據(jù)表結(jié)構(gòu)(2)新建立的數(shù)據(jù)表要實現(xiàn)新的功能,并且不能破壞數(shù)據(jù)庫原由數(shù)據(jù)的結(jié)構(gòu)和完整性。使用現(xiàn)有的數(shù)據(jù)表是遠遠不夠的。所以有必要添加一個新表,使系統(tǒng)程序盡量把這個新表作為數(shù)據(jù)操作的對象。這樣就不會影響原有“設(shè)備管理系統(tǒng)”的正常運行,也能保證原有數(shù)據(jù)的安全性。新表名:WZR_REPAIR,建立過程如下:CREATETABLE[WZR_REPAIR]( [DEV_CODE][nvarchar](3000)COLLATEChinese_PRC_CI_ASNULL, [DEV_NAME][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [TYPE_CODE][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL, [TYPE_NAME][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL, [BEGIN_DATE][datetime]NULL, [END_DATE][datetime]NULL, [REPAIR_CONTENT][nvarchar](3000)COLLATEChinese_PRC_CI_ASNULL, [REPAIR_REASON][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [REMARK][nvarchar](1000)COLLATEChinese_PRC_CI_ASNULL, [PLAN_PKID][decimal](18,0)NULL, [RUSH_PKID][decimal](18,0)NULL, [SPARE_FIELD1][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD2][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD3][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD4][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL, [SPARE_FIELD5][nvarchar](200)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]新表WZR_REPAIR分別從DEV_REPAIR_PLAN_DETAIL和DEV_REPAIR_RUSH讀取相應的數(shù)據(jù)。通過對應字段PLAN_PKID和RUSH_PKID來確定數(shù)據(jù)一對一的關(guān)系。新表與原有表的對應關(guān)系如下:圖4-4新舊表數(shù)據(jù)關(guān)系新表數(shù)據(jù)初始化過程如下:INSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMDEV_REPAIR_PLAN_DETAILGOUPDATEWZR_REPAIRSETTYPE_NAME='年度檢修'WHERETYPE_CODE='1'GOUPDATEWZR_REPAIRSETTYPE_NAME='月度維護'WHERETYPE_CODE='2'GOINSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'報修單'FROMDEV_REPAIR_RUSHGO(3)數(shù)據(jù)同步的實現(xiàn)新建數(shù)據(jù)表中的數(shù)據(jù)不但要接受系統(tǒng)程序的操作控制,也要從原有數(shù)據(jù)庫中自動收集數(shù)據(jù)信息,并且當源數(shù)據(jù)表中的數(shù)據(jù)發(fā)生變動時,新表中相對應的數(shù)據(jù)也要更新改變。實現(xiàn)這種功能最方便的方法就是“觸發(fā)器”。DEV_REPAIR_PLAN_DETAIL表的INSERT,UPDATE,DELETE觸發(fā)器程序如下:CREATETRIGGERPLAN_INSERTONDEV_REPAIR_PLAN_DETAILAFTERINSERTASBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMINSERTEDUPDATEWZR_REPAIRSETTYPE_NAME='年度檢修'WHERETYPE_CODE='1'UPDATEWZR_REPAIRSETTYPE_NAME='月度維護'WHERETYPE_CODE='2'ENDCREATETRIGGERPLAN_UPDATEONDEV_REPAIR_PLAN_DETAILAFTERUPDATEASBEGINIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwherePLAN_pkidin(selectpkidfromdeleted)ENDBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,TYPE_CODE,PLAN_PKID)SELECTDEV_CODE,DEV_NAME,PLAN_BEGIN_DATE,PLAN_END_DATE,REPAIR_CONTENT,REPAIR_REASON,REMARK,REPAIR_TYPE,PKIDFROMINSERTEDUPDATEWZR_REPAIRSETTYPE_NAME='年度檢修'WHERETYPE_CODE='1'UPDATEWZR_REPAIRSETTYPE_NAME='月度維護'WHERETYPE_CODE='2'ENDENDCREATETRIGGERPLAN_DELETEONDEV_REPAIR_PLAN_DETAILAFTERDELETEASIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwherePLAN_pkidin(selectpkidfromdeleted)ENDDEV_REPAIR_RUSH表的INSERT,UPDATE,DELETE觸發(fā)器程序如下:REATETRIGGERRUSH_INSERTONDEV_REPAIR_RUSHAFTERINSERTASBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'報修單'FROMINSERTEDENDCREATETRIGGERRUSH_UPDATEONDEV_REPAIR_RUSHAFTERUPDATEASBEGINIf@@ROWCOUNT>0begindeletefromwzr_repairwhererush_pkidin(selectpkidfromdeleted)endBEGININSERTINTOWZR_REPAIR(DEV_CODE,DEV_NAME,BEGIN_DATE,REPAIR_CONTENT,REMARK,TYPE_CODE,RUSH_PKID,TYPE_NAME)SELECTDEV_CODE,DEV_NAME,REPORT_TIME,REPAIR_CONTENT,REMARK,'3',PKID,'報修單'FROMINSERTEDENDENDCREATETRIGGERRUSH_DELETEONDEV_REPAIR_RUSHAFTERDELETEASIf@@ROWCOUNT>0BEGINdeletefromwzr_repairwhererush_pkidin(selectpkidfromdeleted)END

4.3系統(tǒng)應用程序的具體實現(xiàn)4.3.1系統(tǒng)主要窗體模塊的組成系統(tǒng)主要由“登入”,“MDI主窗體”,“設(shè)備查詢(MDI子窗體)”,“更改查詢(MDI子窗體)”,“臺帳信息”,“更改記錄”等窗體模塊組成。窗體模塊調(diào)用關(guān)系如下:圖4-5窗體模塊調(diào)用關(guān)系4.3.2設(shè)備查詢(MDI子窗體)和更改查詢(MDI子窗體)的實現(xiàn)設(shè)備查詢(MDI子窗體)主要功能:實現(xiàn)多條件模糊查詢;列出符合條件的記錄集;調(diào)用詳細的臺帳記錄;添加刪除記錄。更改查詢(MDI子窗體)主要功能:實現(xiàn)多條件模糊查詢;列出符合條件的記錄集;按要求對字段排序記錄集;調(diào)用詳細的更改記錄;添加刪除記錄。因為設(shè)備查詢(MDI子窗體)和更改查詢(MDI子窗體)功能、界面相似。所不同的只是操作的數(shù)據(jù)對象不同。所以,在這里選擇“更改查詢(MDI子窗體)”作為代表,詳細敘述其功能的實現(xiàn)。更改查詢(MDI子窗體)界面如下:圖4-6更改查詢(MDI子窗體)界面(1)記錄集列表的實現(xiàn)采用VB中AODOC控件和DATAGRID控件實現(xiàn)。Adodc1.ConnectionString=sql_ip//sql_ip數(shù)據(jù)庫連接常量Adodc1.Password=sql_pass//sql_pass數(shù)據(jù)庫密碼常量Adodc1.RecordSource="SELECT*FROMWZR_REPAIR"Adodc1.Refresh調(diào)用詳細更改記錄窗體PrivateSubDataGrid1_DblClick()IfAdodc1.Recordset.EOF=TrueAndAdodc1.Recordset.BOF=TrueThenMsgBox"沒有相關(guān)記錄!",0+48+0,"錯誤!"ElseGGJL.Show//調(diào)用“更改記錄”窗體GGJL.EDIT_LOAD//運行“更改記錄”窗體的EDIT_LOAD方法EndIfEndSub(2)多條件模糊查詢的實現(xiàn)PrivateSubcommand_cx_Click()DimgglbAsStringSelectCaseCombo1.ListIndexCase-1,0:gglb=""Case1:gglb="ANDTYPE_NAME='年度檢修'"Case2:gglb="ANDTYPE_NAME='月度維護'"Case3:gglb="ANDTYPE_NAME='報修單'"Case4:gglb="ANDTYPE_NAME='獨立記錄'"EndSelectDimCODEAsStringDimNAMEAsStringDimDATE_TIMEAsString異常處理,代碼過長,不列出了。讀者可以在本文附屬光盤里找到源代碼。Adodc1.RecordSource="select*fromwzr_repairwhere1=1"&gglb&CODE&NAME&DATE_TIMEAdodc1.RefreshEndSub(3)記錄添加刪除的實現(xiàn)PrivateSubCommand2_Click()//添加記錄GGJL.ShowGGJL.addnew_load//運行“更改記錄”窗體的添加方法EndSubPrivateSubCommand1_Click()//刪除記錄IfAdodc1.Recordset.EOF=TrueAndAdodc1.Recordset.BOF=TrueThenMsgBox"沒有記錄!",0+48+0,"錯誤!"ElseIfAdodc1.Recordset.Fields("TYPE_NAME")="獨立記錄"ThenIfMsgBox("確定要刪除這條記錄嗎?",1+32+256,"是否刪除?")=1ThenAdodc1.Recordset.DeleteElseCancel=1EndIfElseMsgBox"只能刪除<獨立記錄>!",0+48+0,"錯誤!"EndIfEndIfEndSub(4)記錄集排序的實現(xiàn)通過OPATION控件來實現(xiàn)排序字段和升降序的選擇PrivateSubCommand3_Click()DimFILESAsStringDimIndexAsStringIfOption1.ValueThenFILES="begin_date"ElseIfOption2.ValueThenFILES="END_DATE"ElseFILES="TYPE_NAME"EndIfEndIfIfOption4.ValueThenIndex="DESC"ElseIndex="ASC"EndIfAdodc1.Recordset.Sort=FILES&""&IndexEndSub4.3.3臺帳信息窗體和更改記錄窗體的實現(xiàn)臺帳信息窗體和更改記錄窗體的主要功能:顯示設(shè)備臺帳詳細數(shù)據(jù);添加,編輯,刪除臺帳數(shù)據(jù);顯示設(shè)備更改記錄集;添加,編輯,刪除更改記錄;按要求對字段排序更改記錄集;同樣選擇“臺帳信息窗體”作為代表,詳細敘述其功能的實現(xiàn)。臺帳信息窗體和更改記錄窗體界面如下:圖4-7臺帳信息窗體與更改記錄窗體界面(1)設(shè)備臺帳信息的編作實現(xiàn)具有設(shè)備臺帳操作的所有功能,而且要和原有的“設(shè)備管理系統(tǒng)”中的數(shù)據(jù)類型相匹配。因為對原有數(shù)據(jù)庫中的儲存過程資料了解不多。所以SQL語句比較繁瑣復雜。PrivateSubCommand2_Click()//編輯修改操作IfMsgBox("確定要更新?",1+32+256,"更新數(shù)據(jù)?")=1ThenAdodc1.Recordset.Fields("DEV_NAME")=Text2.TextAdodc1.Recordset.Fields("DEV_MODEL")=Text4.TextAdodc1.Recordset.Fields("DEV_SPEC")=Text5.TextAdodc1.Recordset.Fields("SET_PLACE")=Text6.TextAdodc1.Recordset.Fields("SPARE_FIELD1")=Text7.TextAdodc1.Recordset.Fields("SPARE_FIELD2")=Text8.TextAdodc1.Recordset.Fields("SPARE_FIELD3")=Text9.TextAdodc1.Recordset.Fields("SPARE_FIELD4")=Text10.TextAdodc1.Recordset.Fields("SPARE_FIELD5")=Text11.TextAdodc1.Recordset.Fields("MAKER")=Text12.TextAdodc1.Recordset.Fields("SPARE_FIELD6")=Text17.TextAdodc1.Recordset.Fields("ABC")=Text18.TextAdodc1.Recordset.Fields("SPARE_FIELD30")=Text19.TextAdodc1.Recordset.Fields("STATE")=Combo1.ListIndexAdodc1.Recordset.Fields("ACTUALITY")=Combo2.ListIndex+1Adodc1.Recordset.Fields("FOR_PRODUCE")=Combo3.ListIndexIfText13.Text=""ThenAdodc1.Recordset.Fields("BUY_DATE")=NullElseAdodc1.Recordset.Fields("BUY_DATE")=DTPicker1.Year&DTPicker1.MonthEndIfIfText14.Text=""ThenAdodc1.Recordset.Fields("USE_DATE")=NullElseAdodc1.Recordset.Fields("USE_DATE")=DTPicker2.Year&DTPicker2.MonthEndIfIfText15.Text=""ThenAdodc1.Recordset.Fields("ORIGIN_MONEY")=NullElseIfIsNumeric(Text15.Text)ThenAdodc1.Recordset.Fields("ORIGIN_MONEY")=Text15.TextElseMsgBox"<原值>字段不是數(shù)字,請重新輸入!",0+48+0,"字符類型錯誤!"GoToendupdateEndIfEndIfIfText16.Text=""ThenAdodc1.Recordset.Fields("DEPRECIATION_YEAR")=NullElseIfIsNumeric(Text16.Text)ThenAdodc1.Recordset.Fields("DEPRECIATION_YEAR")=Text16.TextElseMsgBox"<折舊年限>字段不是數(shù)字,請重新輸入!",0+48+0,"字符類型錯誤!"GoToendupdateEndIfEndIfDimREMARKupdateAsStringREMARKupdate="UPDATEdev_accountsetremark='"&RichTextBox1.Text&"'wheredev_code='"&Text1.Text&"'"cnn.Execute(REMARKupdate)Adodc1.Recordset.UpdateSBCX_WIN.Adodc1.Refresh——————————————————界面設(shè)置代碼,因為程序過長,不列出了。讀者可以在本文附屬光盤里找到源代碼?!猠ndupdate:ElseCancel=1EndIfPrivateSubCommand3_Click()//刪除臺帳操作IfMsgBox("確定要刪除這條記錄嗎?",1+32+256,"是否刪除?")=1ThenAdodc1.Recordset.DeleteUnloadMeSBCX_WIN.Adodc1.RefreshElseCancel=1EndIfEndSub(2)臺帳信息和更改記錄集的讀取采用VB中AODOC控件和DATAGRID控件實現(xiàn)。Adodc1.ConnectionString=sql_ipAdodc1.Password=sql_passAdodc1.RecordSource="select*fromdev_accountwheredev_code='"&SBCX_WIN.DataGrid1.Columns(0).Text&"'"Adodc1.Refresh//設(shè)備臺帳信息Adodc2.ConnectionString=sql_ipAdodc2.Password=sql_passAdodc2.RecordSource="select*fromwzr_repairwheredev_codelike'%"&SBCX_WIN.DataGrid1.Columns(0).Text&"%'"Adodc2.Refresh//設(shè)備的更改記錄Adodc2.Recordset.Sort="begin_dateDESC"(3)更改記錄的操作PrivateSubCommand5_Click()//編輯修改操作IfMsgBox("確定要添加這條記錄?",1+32+256,"添加記錄?")=1ThenDQSB.Adodc2.Recordset.AddNewD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論