鋁電解計算機控制系統(tǒng)_第1頁
鋁電解計算機控制系統(tǒng)_第2頁
鋁電解計算機控制系統(tǒng)_第3頁
鋁電解計算機控制系統(tǒng)_第4頁
鋁電解計算機控制系統(tǒng)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一節(jié)鋁電解計算機控制系統(tǒng)的簡介一般的工業(yè)生產(chǎn)過程都是連續(xù)進行的,而相對辦公室而言,鋁電解的車間環(huán)境現(xiàn)場的條件相對惡劣得多,因此,工業(yè)過程控制計算機系統(tǒng)必定是具備實時控制功能的高可靠性系統(tǒng),并且,作為控制系統(tǒng)的核心部件一一工業(yè)控制機,理所當然地應能適應特殊應用場合的環(huán)境要求。鋁電解計算機上位機管理系統(tǒng)主要是完成對歷史數(shù)據(jù)的管理、實時數(shù)據(jù)的采集、故障的處理、數(shù)據(jù)圖表顯示;實現(xiàn)實時查詢、歷史查詢、故障查詢、數(shù)據(jù)報表的打印以及對各槽的數(shù)據(jù)記錄進行總體瀏覽,從而體現(xiàn)出管理軟件真正的價值所在。本次畢業(yè)設計采用結(jié)構(gòu)化軟件設計的方法,控制軟件大體上可分為三個層次,主控模塊、功能模塊和子程序模/■、主控模塊,,>,V數(shù)屏故,,>,V數(shù)屏故打控退據(jù)幕障處顯處印制出理示理模模模模模模塊塊塊塊塊塊1模開數(shù)擬關量量據(jù)數(shù)數(shù)據(jù)據(jù)濾采采集集波11.V粘越陽熱八、、病系極列連限效應槽槽電故模模塊故故流攵異障塊意障障常常規(guī)控制出鋁函數(shù)控制陽極轉(zhuǎn)接函數(shù)控制塊,(如上圖4-1所示)為鋁電解計算機控制系統(tǒng)控制軟件功能框圖。由于鋁電解過程控制比較復雜,再加上計算機控制系統(tǒng)所檢測和控制的點很多,對控制的要求比較高。所以在設計控制軟件時采用結(jié)構(gòu)化程序設計方法。其原則是:自上而下,逐步細化,模塊化,結(jié)構(gòu)化編程。軟件設計從上層即主模塊開始向下逐步細化,每層都由若十個模塊組成,程序采用結(jié)構(gòu)化編程。第一層是主模塊層,是控制程序的主體部分,它根據(jù)鋁電解過程不同的工作狀態(tài)調(diào)用相應字模塊,是軟件的核心部分。第二層是子模塊層,是程序的主體部分,主要完成各部分細化模塊的調(diào)用或直接實現(xiàn)子模塊功能。其中主要包括故障處理模塊,數(shù)據(jù)處理模塊,屏幕顯示模塊,控制模塊和打印模塊。第三層是細化子模塊,在最低層,主要完成程序的具體功能。在模塊的劃分中,將同性質(zhì)的功能模塊歸類,每個功能構(gòu)成一個模塊使模塊的“耦合程度”盡量小,“內(nèi)聚程度”盡量大。這樣,在修改某一個模塊是不涉及到其他模塊,增強了模塊的相對獨立性。鋁電解控制軟件采用VisualBasic6.0-程序設計語言開發(fā)設計,整個軟件設計采用結(jié)構(gòu)化,模塊化設計方法,如圖4-2所示為主程序流程圖。圖4-2主程序流程圖由上圖可知,主程序主要由5大功能模塊組成,屏幕顯示模塊主要是實時顯示電解槽工作電壓,系列電流,故障信息以及系統(tǒng)的工作狀態(tài):數(shù)據(jù)處理模塊包括模擬量數(shù)據(jù)采集,數(shù)字量數(shù)據(jù)采集和數(shù)字濾波。由于鋁電解現(xiàn)場受電場,磁場,熱場交互干擾,所以采集到的現(xiàn)場數(shù)據(jù)要經(jīng)過數(shù)字濾波處理;故障處理模塊包括:陽極效應處理模塊,繼電器觸點粘連處理模塊,熱槽故障處理模塊,病槽故障處理模塊和系列電流異常處理模塊,各模塊都相互獨立,控制模塊包括:常規(guī)控制模塊,出鋁函數(shù)控制模塊,陽極轉(zhuǎn)接模塊控制。由于出鋁和陽極轉(zhuǎn)接后的狀態(tài)發(fā)生很大變化,所以,不能采用常規(guī)的控制方法,而采用特需函數(shù)控制,這樣才能使鋁電解過程達到較理想的控制效果。打印模塊主要完成打印報表功能。包括實時數(shù)據(jù)打印和歷史數(shù)據(jù)打印,以及對系列電流、系列電壓、槽電壓等曲線的打印,工作狀態(tài)實時打??;對歷史數(shù)據(jù)根據(jù)查詢的結(jié)果進行打印。第二節(jié)管理軟件開發(fā)語言4.2.1VisualBasic6.0簡介VisualBasic是一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動方式的結(jié)構(gòu)化高級設計語言,面向?qū)ο笫且环N全新的程序設計方法,它從根本上改變了傳統(tǒng)的程序設計模式。其基本思想是:通過建立與具體實際應用相對應的對象,并通過這些對象的組合來創(chuàng)建具體的應用程序。這種設計方法給程序設計帶來了許多良好的特性,如模塊性、封裝性、繼承性、可靠性、可擴充性等總的來看,VisualBasic有以下主要特點:㈠可視化編程VisualBasic提供了可視化設計工具,把Windows界面設計的復雜性"封裝起來”。開發(fā)人員不必為界面設計而編寫大量程序代碼,只需要按設計要求的屏幕布局,用系統(tǒng)提供的工具,在屏幕上畫出各種“部件”,即圖形對象,并設置這些圖形對象的屬性。㈡面向?qū)ο蟮某绦蛟O計VisualBasic是應用面向?qū)ο蟮某绦蛟O計方法(OOP),把程序和數(shù)據(jù)封裝起來作為一個對象,并為每個對象賦予應有的屬性,使對象成為實在的東西。㈢結(jié)構(gòu)化程序設計語言VisualBasic是解釋型語言,在輸入代碼的同時,解釋系統(tǒng)將高級語言分解翻譯成計算機可以識別的機器指令,并判斷每個語句的語法錯誤。㈣事件驅(qū)動編程機制VisualBasic通過事件來執(zhí)行對象的操作。一個對象可能會產(chǎn)生多個事件,每個事件都可以通過一段程序來響應,當事件產(chǎn)生時將執(zhí)行一段指令,來實現(xiàn)指定的操作。㈤訪問數(shù)據(jù)庫VisualBasic系統(tǒng)具有很強的數(shù)據(jù)庫管理功能。利用數(shù)據(jù)控件和數(shù)據(jù)庫管理窗口,可以直接建立或處理MicrosoftAccess格式的數(shù)據(jù)庫,并提供強大的數(shù)據(jù)存儲和檢索功能。同時,VisualBasic還能直接編輯和訪問其他外部數(shù)據(jù)庫。除了這些特性外,VisualBasic還提供了其它一些功能,包括:動態(tài)數(shù)據(jù)交換(DDE)、對象的鏈接與嵌入(OLE)、動態(tài)鏈接庫(DLL)、Internet組件下載、ActiveX控件的建立等等。在系統(tǒng)默認下,VisualBasic6.0的集成開發(fā)環(huán)境為傳統(tǒng)的WindowsMDI(多文檔界面)方式;此外,也可以用SDI(單文檔界面)方式啟動VisualBasic。本次畢業(yè)設計我采用多文檔界面操作方式,這樣便于操作數(shù)據(jù)記錄,也習慣于我們平常的操作習慣。4.2.2API函數(shù)在VisualBasic6.0中應用API是“應用程序編程接口”的簡稱,這是一系列很復雜的函數(shù)。編程人員可以用不同的編程語言調(diào)用API函數(shù),編寫出在Windows操作系統(tǒng)中運行的應用程序。API函數(shù)有成百上千個,這些函數(shù)有的可以單獨在程序中使用,有的需要幾個API函數(shù)配合使用。我在本次設計中,采用了幾個API函數(shù),包括:GetSystemMenu、RemoveMenu(使關閉按鈕失效);FindWindow、SetWindowPos(顯示和隱藏任務欄);SndPlaySound(播放音樂);ShellAbout(顯示版本信息)。使用API函數(shù)可以在很大程度上擴展VisualBasic的功能。如果遇到使用VisualBasic本身提供的語句、函數(shù)和控件不便甚至無法實現(xiàn)的操作時,可以考慮使用API函數(shù)。在使用上很方便,程序中只要事先對API進行了聲明,就可以同使用VisualBasic自身的函數(shù)一樣,在程序中使用這些函數(shù)。第三節(jié)管理軟件界面設計軟件功能是通過模塊實現(xiàn)的,因此,在確定軟件模塊組成時,軟件的功能劃分成為了首先需要考慮的因素,如表4-1所示?!澳K”是結(jié)構(gòu)化設計方法的產(chǎn)物,并在面向?qū)ο笤O計方法中依靠“類、對象”得到了更進一步的加強。按照結(jié)構(gòu)化設計思想,一個具有優(yōu)良特性的模塊應該具有獨立性,也就是說要達到低耦合、高內(nèi)聚的要求。但是,模塊的獨立性是相對的,它們之間總是存在一定的關系,其中最基本的關系是上級模塊對下級模塊的功能調(diào)用關系,這時上級模塊起控制作用,而下級模塊則用來完成具體任務。在VisualBasic中,模塊還具有一定的多層次特征。圖4-3所反映的只是文件級外層模塊,以及它們之間的調(diào)用關系;而文件內(nèi)則是由過程、函數(shù)組成的內(nèi)層模塊。在創(chuàng)建軟件之前,過程、函數(shù)組成、調(diào)用關系,以及其內(nèi)部算法等等問題,都應事先確定下來。它們都是軟件設計時必須完成的任務。模塊名類別說明Modulel標準模塊啟動系統(tǒng)、設置環(huán)境FrmStart窗體模塊軟件前幕FrmLogin窗體模塊鋁電解管理軟件登錄窗體FrmMainMDI窗體模塊主窗體FrmCLL窗體模塊出鋁量數(shù)據(jù)顯示FrmCXXCL窗體模塊槽信息處理數(shù)據(jù)顯示FrmCZT窗體模塊槽狀態(tài)數(shù)據(jù)顯示FrmGZJL窗體模塊故障記錄數(shù)據(jù)顯示FrmSJB窗體模塊數(shù)據(jù)表數(shù)據(jù)顯示FrmSelect窗體模塊出鋁量、數(shù)據(jù)表、故障記錄三表數(shù)據(jù)查詢FrmMSChart窗體模塊圖表顯示數(shù)據(jù)FrmTreeSkim窗體模塊各槽數(shù)據(jù)瀏覽DELDJSuHua設計器數(shù)據(jù)環(huán)境DRCLXX數(shù)據(jù)報表出鋁量數(shù)據(jù)報表DRCXXCL數(shù)據(jù)報表槽信息處理數(shù)據(jù)報表DRCZT數(shù)據(jù)報表槽狀態(tài)數(shù)據(jù)報表DRGZJL數(shù)據(jù)報表故障記錄數(shù)據(jù)報表DRSJB數(shù)據(jù)報表數(shù)據(jù)表數(shù)據(jù)報表工程管理窗工程-工程1frmCMCL佃DI槽電反-、窗體自frmCLL伽口工系列電蒲采-甜工程1(畢業(yè)設計一守頃)6,,,罰frmCZT(JW工槽工作狀忘frmGZJL傭口1事怦記錄ifrmLogin墮錄界面.fifrmMaiR(mdi置體.frm:fEmMSChart(JW1操作帽frmS^lect?DI事件類;frmSJB(W工出鋁信息殖frmS-tart(}1叮噪作員管£rmTreeStint隆■摺數(shù)提+??口模塊-'設計器gEELDJSuHiia(JEUJSuKn@DRcm(出鋁信息報表,餌ERCXKCL皤信息處理指@BRCZT潴狀態(tài)報表一以]@D瞰JL做隙記錄報表.艮D(zhuǎn)RSJT箱數(shù)據(jù)報表一以】圖4-3鋁電解管理軟件中模塊之間的調(diào)用關系4.3.1登錄窗體(frmLogin)進入管理軟件主界面時,必須先驗證用戶信息,當用戶名和密碼都正確時才允許進入圖4-3登錄窗體設計圖主界面,如下表4-2為登錄窗體的控件列表,其設計窗體如下圖4-4圖4-3登錄窗體設計圖控件名稱屬性名屬性值作用FrameNameCaptionFrame1Frame1作為容器CommandButtonNameCaptioncmdExit退出命令按鈕CommandButtonNameCaptioncmdOk確定命令按鈕TextBoxNamePasswordChartxtPassword*輸入密碼ComboBoxNamecboUser選擇用戶LabelNameCaptionLabel1用戶LabelNameCaptionLabel2密碼表4-2登錄窗體所有控件4.3.2主窗體模塊(frmMain)主窗體設計視圖如圖4-4所示,在本實列中,主窗體是控制中心,它通過建立在該窗體上的菜單而實現(xiàn)對各功能窗體的調(diào)用控制,其中一些常用功能調(diào)用還可以通過工具欄上的圖標按鈕完成。系統(tǒng)標題欄

系統(tǒng)標題欄圖4-4主窗體設計視圖主窗體是MID窗體,因此在其內(nèi)可以打開多個子窗體。另外,公共對話框控件(CommonDialog)放置于主窗體上,這是由于該控件將要被諸多操作應用;在本實列中,“打開文件”對話框、“文件的備份”對話框、“文件導入”對話框都需要提供它獲得,下表4-3列出了主創(chuàng)體中菜單的設置情況。表4-3菜單控件屬性設置標題名稱快捷鍵鋁電解槽信息(&F)Menu_LDJCXX---槽信息處理Menu_CXXCLCtrl+A---出鋁量Menu_CLLCtrl+S---數(shù)據(jù)表Menu_SJBCtrl+ZMenu_Underline1---槽狀態(tài)Menu_CZTCtrl+X---故障記錄Menu_GZJLCtrl+CMenu_Underline2---退出MenuExitDel查詢(&S)MenuSelect---數(shù)據(jù)備份…Menu_SJBF---數(shù)據(jù)導入...Menu_SJDR---槽數(shù)據(jù)瀏覽…Menu_CSJLLMenu_Underline4---查詢數(shù)據(jù)Menu_CSSJ——出鋁量查詢Menu_SelectCLLCtrl+B------槽數(shù)據(jù)查詢Menu_SelectCSJCtrl+N故障記錄查詢Menu_SelectGZJLCtrl+VMenu_Underline3

---重排窗口Menu_CTBJ層疊方式MenuVbCascade水平方式MenuVbTileHorizontal垂直方式MenuVbTileVertical------最小化窗體重排MenuVbArrangeIcons幫助(&H)MenuHelp---關于...MenuAboutCtrl+M---內(nèi)容MenuContentF1另外,兩個工具欄的設置情況如下兩表4-4和4-5所示。索引標題關鍵字樣式文本對齊1槽處理槽信息處理0—tbrDefault1—tbrTextAlignRight2出鋁量出鋁量3數(shù)據(jù)表數(shù)據(jù)表4槽狀態(tài)槽狀態(tài)5故障表故障記錄6退出退出5—tbrDropDown表4-4工具欄屬性設置(1)索引標題關鍵字樣式文本對齊1出鋁查詢出鋁量查詢0—tbrDefault1-tbrTextAlignRight2數(shù)據(jù)查詢槽數(shù)據(jù)查詢3故障查詢故障記錄查詢44—tbrSeparator5層疊方式層疊方式0—tbrDefault6垂直方式垂直方式5—tbrDropDown表4-5工具欄屬性設置(2)4.3.3數(shù)據(jù)顯示窗(共包括五個子窗體)如下圖4-5所示,列出了在主窗體中顯示的窗體。1口?1鋁電E通晝£后唾宙彥近宅逢迓:胯.江萱:艾坦導黨師L手養(yǎng)露1口?1鋁電E通晝£后唾宙彥近宅逢迓:胯.江萱:艾坦導黨師L手養(yǎng)露—詣出▼芯出£目查詢斐數(shù)據(jù)查詢曜故障查詢建層疊方式酩垂直方式-鋁電藤控制系統(tǒng)上位機畢地宙廠|04-6-14|21:2S圖4-5子窗體在主窗體中顯示以下將詳細介紹這五個子窗體:槽信息處理窗體(frmCXXCL)這個窗體主要的功能是記載各槽數(shù)據(jù)的邏輯值如是否打印、是否換槽等等。這個以后的歷史數(shù)據(jù)查詢的時候有依據(jù)可查,下圖4-6所示槽信息處理運行界面圖。圖4-6槽信息處理運行界面圖下表4-6為控件屬性設置值控件名稱屬性名屬性值作用.AdodcNameCaptionAdodc1Adodc1獲取記錄集,實現(xiàn)數(shù)據(jù)綁定SSTabNameTabsPerRowSSTab12瀏覽,切換FrameNameCaptionFrame1Frame1容器DataGridNameDataGrid1數(shù)據(jù)綁定,獲取記錄集CommandButtonNameCaptionCmdExit退出命令按鈕CommandButtonNameCaptionCmdUpdate刷新CommandButtonNameCaptionCmdDelete刪除CommandButtonNameCaptionCmdAddNew增加CommandButtonNameCaptionCmdMoveLast末記錄CommandButtonNameCaptionCmdMoveNext下一條CommandButtonNameCaptionCmdMovePrevious上一條CommandButtonNameCaptionCmdMoveFirst首記錄

CheckBoxNameCaptionDataFieldCheck3修改設定值修改設定值TimerNameEnabledIntervalTimer1False100時間觸發(fā)器TextBoxNameDataFieldDataSourcetxt_CBH槽編號Adodc1數(shù)據(jù)綁定TextBoxNameDataFieldDataSourcetxt_CZRQ操作日期Adodc1CheckBoxNameCaptionDataFieldDataSourceCheck1是否打印是否打印Adodc1CheckBoxNameDataFieldDataSourceCheck2是否換槽Adodc1表4-6槽信息處理窗體控件屬性設置值出鋁量窗體(frmCLL)此窗體主要用來記錄各槽的出鋁情況,包括出鋁量、開始時間、完成時間、出鋁用時。此表記錄的數(shù)據(jù)量大,維護起來比較費時費力,合理的安排表的結(jié)構(gòu)以及數(shù)據(jù)記錄的采集,是系統(tǒng)正常運行的保證。下表4-7和圖4-7分別列出了窗體控件的屬性值和界面運行圖。控件名稱屬性名屬性值作用DataGridNameCaptionDataGrid1鋁電解各槽出鋁量顯示記錄AdodcNameAdodc1CommonDialogNameCommonDialog1TextBoxNameDataFieldDataSourceText1槽編號Adodc1表4-7出鋁量窗體控件屬性值

圖4-7出鋁量窗體界面運行圖數(shù)據(jù)表窗體(frmSJB)此窗體主要用來記錄各槽的電流、電壓數(shù)據(jù),包括:槽電壓、系列電壓、系列電流。各槽正常工作時,電流電壓應該保持穩(wěn)定,隨著時間的推移,鋁條與槽底的距離不斷的變化著,而電壓與距離有關,所以應隨時跟蹤數(shù)據(jù)的變化以調(diào)整變化的電壓,使之動態(tài)的達到穩(wěn)定。下表4-8和圖4-8表示窗體控件的屬性設置值和窗體運行效果??丶愋涂丶丶底饔肁dodcNameAdodc1獲取記錄集,綁定數(shù)據(jù).DataGridNameDataGrid1FrameNameFrame1FrameNameFrame2CommandButtonNameCommand1命令按鈕Command8TextBoxNameDataSourceText1綁定數(shù)據(jù)Text4Adodc1CommonDialogNameCommonDialog1公共對話框.LabeNameLabelLabel7表4-8數(shù)據(jù)表窗體控件列表

圖4-8數(shù)據(jù)表窗體運行圖槽狀態(tài)窗體(frmCZT)此窗體主要用來記錄各槽的狀態(tài)值,包括:是否出鋁、是否加料、是否粘連、是否轉(zhuǎn)接。此窗體主要記錄著各槽數(shù)據(jù)的邏輯值,易于維護,操作簡單,工作量不大等優(yōu)點。下表4-9和圖4-9是窗體控件列表和窗體運行效果。控件類型控件名屬性值作用.DataGridNameAdodcSourceDataGrid1Adodc1顯示數(shù)據(jù)記錄AdodcNameAdodc1數(shù)據(jù)綁定,獲取記錄集.CommonDialogNameCommonDialog1公共對話框表4-9槽狀態(tài)窗體控件列表HI檀編號是否出鋁是否加料是否粘連是否轉(zhuǎn)二?1-1-1-1-150-1-1a6-1□-1-170-1□a80□-1-i卜iM[J總記錄條數(shù);1口當前記錄為;1〔T代表_?1?ij圖4-9槽狀態(tài)窗體運行圖故障記錄窗體(frmGZJL)此窗體主要用來記錄槽的故障發(fā)生情況,包括:各槽故障的類型、故障原因、發(fā)生時間、處理情況。鋁電解槽的故障類型主要分這么幾類:病槽、熱槽、冷槽、停槽、陽極效應。此表維護起來工作量也很大,必須實時觀察各槽的工作情況,出了毛病的槽要及時進

行修理以免影響系統(tǒng)的正常工作。下表4-10和圖4-10分別是窗體控件列表和運行圖。表4-10故障記錄窗體控件列表控件類型控件屬性控件值作用AdodcNameAdodc1獲取記錄集,實現(xiàn)數(shù)據(jù)綁定FrameNameFrame1容器Frame4CommandButtonNameCommand1命令按鈕Command8CommonDialogNameCommonDialog1公共對話框TextBox.NameText1Text5數(shù)據(jù)顯示,數(shù)據(jù)綁定LabelNameLabel1Label6圖4-10故障記錄運行圖4.3.4窗體查詢界面一個完整的應用軟件,除了有數(shù)據(jù)的顯示,增加,刪除等操作外,如果沒有數(shù)據(jù)的查詢,那么多少有點不完善,下面我將講述出鋁量查詢窗體、數(shù)據(jù)表查詢窗體、故障記錄查詢窗體的操作。出鋁量查詢下圖4-11所示為出鋁量查詢界面圖功能簡單闡述一下,本窗體可查詢各槽的出鋁量,也可以按出鋁量查詢,例如查詢一號槽的出鋁情況,在槽編號文本框中輸入數(shù)字“1”然后單擊“確定”按鈕,查詢條件將會出現(xiàn)在“查詢條件顯示”框里出現(xiàn),以核對查詢條件是否正確,當確認無誤后,單擊“查14詢”按鈕,稍等片刻,查詢結(jié)果將顯示在“查詢”結(jié)果里;當要以“出鋁量”為查詢條件的話,可以這樣操作,選擇“出鋁量”的查詢條件,包含%、<、<=、>=、=”五種情況,查詢:.查詢條件槽澈1藍表查疽、逮薄記錄查詢'1查詢條件顯示』查詢結(jié)果〕查詢:.查詢條件槽澈1藍表查疽、逮薄記錄查詢'1查詢條件顯示』查詢結(jié)果〕噸hHLKh唐端號=~231出鋁堂查御組舍查詢:算L查EE1£CT*FEOfil圖4-11出鋁量查詢界面圖任選其一,然后輸入要查詢噸位的范圍,如,我想查詢出鋁量小于并且等于3噸的槽號,可以在查詢組合框中選擇“<二”條件,然后輸入數(shù)字三,單擊“確定”按鈕,確認條件無誤后,單擊“查詢”按鈕,查詢結(jié)果將顯示在下面的表格里;如果想進行組合查詢,也可以按上述步驟,不過進行組合查詢時要注意一個問題,就是輸入槽編號后,不要忘了選后面的組合條件。另外,此窗體還可以進行三向特需操作,想把查詢結(jié)果保存下來,一是以報表形式保存,二是以圖表形式顯示,三是以Excel文件格式保存。槽數(shù)據(jù)查詢運行界面如下圖4-12所示查詢條查詢結(jié)果查詢條件顯示7查詢條查詢結(jié)果查詢條件顯示7如[卉Wn.FCT一*FROM數(shù)旭表WIERE敷編號=1圖4-12槽數(shù)據(jù)查詢界面槽數(shù)據(jù)表查詢主要以電壓查詢?yōu)橹鳎敳樵兘Y(jié)果顯示的電壓不符合正常電壓時,可以5Q設計網(wǎng)15及時修正,具有查詢和修改雙向功能。查詢步驟如下:先查詢想要查詢的槽的電壓情況,輸入槽號,然后單擊“確定”按鈕,“查詢條件顯示”文本框?qū)@示查詢條件以核對之用,單擊“查詢”按鈕稍等片刻,查詢結(jié)果將顯示在下面的表格里;查詢電壓時,將列出符合條件的槽號,顯示在表格里,此窗體也提供三種存儲查詢數(shù)據(jù)的方式,如:報表、圖表、Excel三種形式。在“槽電壓”文本框中輸入查詢條件,也包括五種條件,如選擇“<=”條件,然后輸入你想查詢電壓的范圍,如輸入數(shù)字“4”,單擊“確定”按鈕,顯示查詢條件,單擊“查詢”按鈕,查詢結(jié)果將顯示在表格里;當進行組合查詢時,可遵照“出鋁量查詢”操作步驟進行。故障記錄查詢運行界面如下圖4-13所示04-S-15SELECT*FROM故障記錄WHERE炭生時間Between#00-5-16#And#04-6-15#,已tween|ao-5-16曰期匠SQL查詢語句^5故障類型查詢?nèi)掌诓劬幪栒项愋蛿矷璋原因04-S-15SELECT*FROM故障記錄WHERE炭生時間Between#00-5-16#And#04-6-15#,已tween|ao-5-16曰期匠SQL查詢語句^5故障類型查詢?nèi)掌诓劬幪栒项愋蛿矷璋原因11.6病;11七J溫度太1■氐"Tin—熱槽1扃■度rSi確定生成報表..-生成ExcwL..查詢|查伺結(jié)果:查詢條件顯示單擊“DTPicker”控件,將出現(xiàn)上圖式樣,選擇好日期,單擊“確定”按鈕,顯示查詢條件,確認無誤后,單擊“查詢”按鈕,稍等片亥L查詢結(jié)果將顯示在“DataGrid”控件里。保存查詢結(jié)果,這里只提供兩種方式,即報表方式和轉(zhuǎn)換成Excel這兩種方式;當需

圖4-13DTPicker控件圖圖4-13DTPicker控件圖第四節(jié)各槽數(shù)據(jù)總體瀏覽在設計完一個應用程序后,當數(shù)據(jù)庫里的數(shù)據(jù)不太多時,想查看每一條具體的記錄是可以實現(xiàn)的,但當數(shù)據(jù)庫里的數(shù)據(jù)大得驚人時,想一條一條去查找,那是不可實現(xiàn)一件事情,就如本次畢業(yè)設計一一鋁電解上位機管理系統(tǒng),數(shù)據(jù)一天一記,而且還必須幾時幾分一記,一個月下來,一年下來,那數(shù)據(jù)將是非??捎^的,如果想查看具體某一個槽出鋁情況,就必須打開上面的“出鋁量”查詢窗體,雖然經(jīng)過一段時間查詢,能查到你所想要的數(shù)據(jù),但是畢竟不是好的方法。如果想在Windows資源瀏覽器里一樣瀏覽數(shù)據(jù),那想必是一件輕松的事情,我按照上述想法,設計了一個樹狀瀏覽器,方便瀏覽各槽數(shù)據(jù),效果顯示圖見下圖4-14和表4-11所示。樹狀瀏覽器靠鋁電解各槽數(shù)據(jù)說]故膜記錄皆摺狀態(tài)數(shù)據(jù)表出鋁量畫此錄|表節(jié)點°¥鋁電解控制理■與A"樹狀瀏覽器靠鋁電解各槽數(shù)據(jù)說]故膜記錄皆摺狀態(tài)數(shù)據(jù)表出鋁量畫此錄|表節(jié)點°¥鋁電解控制理■與A"表所有信息槽編號出鋁量Ub開蛇時間完H▲?1Q0-4-L葉一451/9B-2-L052.31/98-2-1598-;626「98-2-398-;72.398-2-1明-;82.697-5-6953.297-6-397-(102.6□0-6-3oo-t112.5□0-3-100-:123.2□0-3-B00-:1-!W公…rin-.-1-Q「|「|_;11H?記錄數(shù)總共為7^當前記錄為第1條1小1DataGrid數(shù)據(jù)表Adodc數(shù)據(jù)控件圖4-14數(shù)據(jù)瀏覽器控件類型屬性名屬性值作用TreeViewNameImageListTreeView1ImageList1數(shù)據(jù)瀏覽DataGridNameAdodcSourceDataGrid1Adodc1o一、,J表4-11數(shù)據(jù)顯示數(shù)據(jù)]瀏覽窗體控oO件列表>AdodcNameAdodc1記錄集,實現(xiàn)數(shù)據(jù)綁定^ImageListNameImageList1獲取圖象控件見上表4-11控件列表中,使用了四個控件:TreeView、DataGrid、Adodc、ImageList,其中TreeView控件是主要控件,它在窗體初始化過程中,通過數(shù)據(jù)鏈接,查找數(shù)據(jù)庫每一個表,把每個表的標題作為父節(jié)點,把每個表里的槽號作為子節(jié)點放到TreeView控件中里,這樣在瀏覽數(shù)據(jù)時,一般先選中父節(jié)點,就代表要瀏覽那個表里的數(shù)據(jù),當選中子節(jié)點時,說明要瀏覽具體那個槽,這樣就可以把每個表里的每一個槽的數(shù)據(jù)記錄顯示出來,TreeView控件支持鼠標和四個方向鍵。進行數(shù)據(jù)顯示的過程可以有以下描述:進行數(shù)據(jù)瀏覽時,打開窗體,用鼠標和方向鍵都可以,原理大致就是上面所說的,當你點擊子節(jié)點時(點擊父節(jié)點不會有任何反應,但這也是不可缺少的一步),將激發(fā)TreeView1控件的NodeClick事件,在那里面編寫代碼,根據(jù)點擊的槽號進行判斷,以及所處的父節(jié)點的位置,經(jīng)過一個循環(huán),就可以得知要查詢的槽號,編譯成SQL語句,把它賦值個Adodc1控件的RecordSource屬性,然后Adodc1控件進行刷新,與它相連的DataGrid1控件顯示查詢數(shù)據(jù),雖然表面上說是數(shù)據(jù)的瀏覽,其實質(zhì)還是數(shù)據(jù)的查詢。第五章鋁電解計算機管理軟件程序代碼第一節(jié)啟動模塊代碼本畢業(yè)設計中,啟動模塊用于設置軟件運行時的公共數(shù)據(jù)環(huán)境和順序調(diào)用frmLogin(登錄窗)、frmMain(主窗體)等下級模塊,由此進入管理軟件運行環(huán)境。Module1源程序如下:OptionBase1PublicfMainAsfrmMainPublicCQXAsStringPublicConStringAsStringPublicps_sqlCommonAsStringPublicps_ChartTitleCommonAsStringPublicpa_ArrValueCommon()PublicDeclareFunctionsndPlaySoundLib"winmm.dll"Alias"sndPlaySoundA"(ByVallpszSoundNameAsString,ByValuFlagsAsLong)AsLongPublicDeclareFunctionShellAboutLib"shell32.dll"Alias"ShellAboutA"(ByValhwndAsLong,ByValszAppAsString,ByValszOtherStuffAsString,ByValhIconAsLong)AsLongPublicDeclareFunctionGetSystemMenuLib"user32"(ByValhwndAsLong,ByValbRevertAsLong)AsLongPublicDeclareFunctionRemoveMenuLib"user32"(ByValhMenuAsLong,ByValnPositionAsLong,ByValwFlagsAsLong)AsLongSubmain()OnErrorResumeNextConString="Provider二Microsoft.Jet.OLEDB.4.0;"&"DataSource="&App.Path&"\ALElecCompSystAdmi.mdb;"&"PersistSecurityInfo=False"DimfLoginAsNewfrmLoginDimfStartAsNewfrmStart,fStart.ShowvbModalfLogin.ShowvbModalEndSubSubClose_ClosedButton(a,B)'使關閉按鈕失效DimhMenuhMenu=GetSystemMenu(a,0)RemoveMenuhMenu,&HF060,&H1000'************************此段為使關閉按鈕失效EndSub第二節(jié)登錄窗體模塊代碼用戶登錄窗(frmLogin)用于當進入鋁電解管理軟件時,對用戶口令的驗證,這樣有效的防止非法用戶進行操作。frmLogin模塊運行效果圖5-1所示。廠登錄窗體V運行圖廠登錄窗體V運行圖圖5-1登錄窗體DimTIMAsIntegerDimmydbAsDatabaseDimmyrsAsRecordsetDimsqlAsStringPrivateSubForm_Load()DimaAsStringDimBAsIntegera=Me.hwndB=0Close_ClosedButtona,BX=sndPlaySound(App.Path&"\Welcom98.wav",&H1)EndSubPrivateSubForm_Activate()Setmydb=Workspaces(0).OpenDatabase(App.Path&"\GraduateDesign.mdb")'打開數(shù)據(jù)庫sql="select操作員fromRegisterPerson"Setmyrs=mydb.OpenRecordset(sql)',dbOpenDynaset)Ifmyrs.EOF=FalseThenmyrs.MoveLastIfmyrs.BOF=FalseThenmyrs.MoveFirstForI=0Tomyrs.RecordCount-1cboUser.AddItem(myrs.Fields(0))myrs.MoveNextNextIIfcboUser.ListCount>0ThencboUser.ListIndex=0myrs.Closemydb.ClosecboUser.SetFocusEndSubPrivateSubcboUser_Click()Staticli_iAsIntegertxtPassword.SetFocusIfli_i>0ThenX=sndPlaySound(App.Path&〃、水底世界菜單命令.wav",&H1)EndIflii=lii+1EndSubPrivateSubcboUser_DropDown()X=sndPlaySound(App.Path&〃、水底世界菜單彈出.wav",&H1)EndSubPrivateSubcmdOk_Click()'確認操作員和密碼DimMESSAGEAsStringIfcboUser.Text<>""ThenSetmydb=Workspaces(0).OpenDatabase(App.Path&"\GraduateDesign.mdb")Setmyrs=mydb.OpenRecordset("RegisterPerson",dbOpenDynaset)myrs.FindFirst"操作員="+Chr(34)+cboUser.Text+Chr(34)+""'查找操作員"Ifmyrs.NoMatchThen'沒查到記錄MsgBox("無此操作員!")ElseIftxtPassword.Text=myrs.Fields("密碼")Then'確認密碼myrs.Closemydb.CloseUnloadMeSetfrmLogin=NothingfrmMain.ShowX=sndPlaySound(App.Path&"、水底世界放到最大.wav",&H1)5Q設計網(wǎng)20ElseIfTIM=3ThenMESSAGE=MsgBox("密碼輸入錯誤,請向系統(tǒng)管理員查詢!〃,vbOKOnly,〃〃)EndEndIfX=sndPlaySound(App.Path&"\Reminder.wav",&H1)MsgBox(〃密碼錯誤,請重新輸入密碼!")TIM=TIM+1'密碼輸入錯誤次數(shù)txtPassword.SetFocustxtPassword.SelStart=0txtPassword.SelLength=Len(txtPassword.Text)EndIfEndIfEndIfEndSubPrivateSubcboUser_KeyDown(KeyCodeAsInteger,ShiftAsInteger)'回車換彳亍IfKeyCode=vbKeyDownThentxtPassword.SetFocusEndIfEndSubPrivateSubtxtPassword_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyDownThencmdOk.SetFocusEndIfIfKeyCode=vbKeyUpThencboUser.SetFocusEndIfEndSubPrivateSubcmdExit_Click()DimmsgAsIntegermsg=MsgBox(〃確實要退出鋁電解畢業(yè)設計程序嗎?〃,vbYesNoOrvbDefaultButton2,〃蘇華程序設計〃)Ifmsg=6ThenX=sndPlaySound(App.Path&〃、電腦探密啟動.wav〃,&H1)EndEndIfEndSub第三節(jié)主窗體模塊代碼第三節(jié)主窗體模塊代碼主窗體(frmMain)運行圖5-2所示。在本實列中,主窗體時控制中心,它通過建立在該窗體上的菜單而實現(xiàn)對各功能窗體的調(diào)用控制,其中一些常用功能調(diào)用還可以通過工具欄上的圖標按鈕完成。

辱鋁電解上位機控制系藐畢業(yè)設計,設計者;蘇華,指導君.一指電解槽信息查詢q鋁電解上位機控制系場畢業(yè)設計,設計者:蘇再主窗體工具欄I心情姓理簞出鋁量等數(shù)據(jù)表卷槽狀態(tài)gjj敵圜表宅退出申2。查詢主窗體工具欄2。鋁電解控制系統(tǒng)上位機畢業(yè)設計04-6-165:02主窗體運行界面圖5-2主窗體運行圖frmMain模塊源程序如下:PrivateSubMenu_CLL_Click()frmCLL.ShowEndSubPrivateSubMenu_CDY_Click()Form2.ShowEndSubPrivateSubMenu_CSJLL_Click()frmTreeSkim.ShowEndSubPrivateSubMenu_CXXCL_Click()frmCXXCL.ShowEndSubPrivateSubMenu_CZT_Click()frmCZT.ShowEndSubPrivateSubMenu_GZJL_Click()frmGZJL.ShowEndSubPrivateSubMenu_SelectCLL_Click()frmSelect.ShowEndSubPrivateSubMenu_SelectCSJ_Click()frmSelect.ShowEndSubPrivateSubMenu_SelectGZJL_Click()frmSelect.ShowEndSubPrivateSubMenu_SJB_Click()frmSJB.ShowEndSubPrivateSubMenu_SJBF_Click()Dimfs1AsNewFileSystemObjectConstvbOFNOverwritePrompt=&H2&ConstvbOFNPathMustExist=&H800&Me.dlgCommonDialog.FileNameMe.dlgCommonDialog.DialogTitle=〃數(shù)據(jù)備份(蘇華設計)"Me.dlgCommonDialog.DefaultExt=〃*.mdb〃Me.dlgCommonDialog.Filter=〃數(shù)據(jù)庫(*.MDB)|*.mdb|所有文件(*.*)|*.*〃Me.dlgCommonDialog.Flags=vbOFNOverwritePromptOrvbOFNPathMustExistOnErrorGoToHandllMe.dlgCommonDialog.ShowSaveIfMe.dlgCommonDialog.FileName<>""Then"\ALElecCompSystAdmi.mdb",fsl.CopyFileApp.Path&Me.dlgCommonDialog.FileName,TrueMsgBox〃數(shù)據(jù)庫信息備份成功。",vbOKOnly,〃蘇華程序設計〃"\ALElecCompSystAdmi.mdb",ElseMsgBox〃沒有備份任何數(shù)據(jù)〃,vbOKOnly,〃蘇華程序設計〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃蘇華程序設計〃EndSubPrivateSubMenu_SJDR_Click()DimfsAsNewFileSystemObjectConstvbOFNFileMustExit=&H800&Me.dlgCommonDialog.DialogTitle=〃數(shù)據(jù)導入(蘇華設計)〃Me.dlgCommonDialog.Filter=〃數(shù)據(jù)庫(*.mdb)|*.mdb|所有文件(*.*)|*.*"Me.dlgCommonDialog.Flags=vbOFNFileMustExitOnErrorGoToHandllMe.dlgCommonDialog.ShowOpenIfMe.dlgCommonDialog.FileName<>""Thenfs.CopyFileMe.dlgCommonDialog.FileName,App.Path&〃、數(shù)據(jù)庫備份\ALElecCompSystAdmi.mdb",TrueMsgBox〃數(shù)據(jù)庫信息成功導入。",vbOKOnly,〃蘇華程序設計〃ElseMsgBox〃沒有導入任何數(shù)據(jù)〃,vbOKOnly,〃蘇華程序設計〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃蘇華程序設計〃EndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,"“關于”鋁電解控制系統(tǒng)〃,"指導老師:李界家,"&Chr(13)&〃設計者:蘇華〃&Chr(13)&Mid(Str(Now),1,8),ByVal0&EndSubPrivateSubMenuContent_Click()Me.dlgCommonDialog.HelpFile=App.Path&"\Winabc.hlp"Me.dlgCommonDialog.ShowHelpEndSubPrivateSubMenuExit_Click()DimmsgAsIntegermsg=MsgBox("確實要退出鋁電解畢業(yè)設計程序嗎?〃,vbYesNoOrvbDefaultButton2,〃蘇華程序設計〃)Ifmsg=6ThenUnloadfrmMainEndEndIfEndSubPrivateSubMenuVbArrangeIcons_Click()Me.ArrangevbArrangeIconsEndSubPrivateSubMenuVbCascade_Click()Me.ArrangevbCascadeEndSubPrivateSubMenuVbTileHorizontal_Click()Me.ArrangevbTileHorizontalEndSubPrivateSubMenuVbTileVertical_Click()Me.ArrangevbTileVerticalEndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase〃槽信息處理〃Menu_CXXCL_ClickCase〃出鋁量〃Menu_CLL_ClickCase〃數(shù)據(jù)表〃Menu_SJB_ClickCase〃槽狀態(tài)〃Menu_CZT_ClickCase〃故障記錄〃Menu_GZJL_ClickCase〃退出〃MenuExit_ClickEndSelectEndSubPrivateSubToolbar2_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase〃出鋁量查詢〃Menu_SelectCLL_ClickCase〃槽數(shù)據(jù)查詢〃Menu_SelectCSJ_ClickCase〃故障記錄查詢〃Menu_SelectGZJL_ClickCase〃層疊方式〃MenuVbCascade_ClickCase〃垂直方式〃MenuVbTileVertical_ClickEndSelectEndSubPrivateSubMDIForm_Unload(CancelAsInteger)SetfrmMain=NothingEndSub第四節(jié)數(shù)據(jù)顯示窗體模塊代碼數(shù)據(jù)顯示窗共包括五個子窗體,運行圖見第四章的圖4-5所示,下面講述它們的模塊代碼:5.4.1槽信息處理窗體(frmCXXCL)模塊源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubForm_Load()Me.Adodc1.ConnectionString=ConStringMe.Adodc1.RecordSource="select*from槽信息處理〃Me.Adodc1.RefreshLabel4.Caption="2004屆鋁電解上位機控制系統(tǒng)畢業(yè)設計,指導老師:李界家,設計者:蘇華;一一槽信息處理〃Label4.Left=Me.WidthSSTab1_Click1EndSubPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)Me.Adodc1.Caption=〃總記錄條數(shù):"&(Me.Adodc1.Recordset.RecordCount)&Space(2)&"當前記錄為:"&(Me.Adodc1.Recordset.AbsolutePosition)&Space(2)&〃設計人:蘇華〃EndSubPrivateSubMenu_SCBBWJ_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from槽信息處理〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRCXXCL.DataSource=rsDRCXXCL.Show

ExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃內(nèi)部錯誤〃&Err.Number&"蘇華設計"Ifdb.Mode=16ThenEndEndSubPrivatedb.Closedb.Mode=0EndEndSubPrivateDimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialog1.FileName=〃〃Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls〃Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃將“槽信息處理"表轉(zhuǎn)換成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from槽信息處理〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range(〃Al:El〃).Value=Array(〃槽編號〃,〃是否打印〃,〃是否換槽",〃修改設定值〃,〃操作日期〃)newsheet.Range(〃A2〃).CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strnewxls.Quitrs.Closedb.Closedb.Mode=0MsgBox〃數(shù)據(jù)轉(zhuǎn)換成功。",vbOKOnly,〃蘇華程序設計〃ElseMsgBox〃此次操作已取消〃,vbOKOnly,〃蘇華程序設計〃EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"蘇華程序設計"Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfEndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,〃鋁電解槽信息處理數(shù)據(jù)表〃,〃指導老師:李界家〃&Chr(13)&_〃設計者:蘇華〃&Chr(13)&〃演示時間:〃&Date,Me.IconEndSubPrivateSubMenuExit_Click()UnloadfrmCXXCLEndSubPrivateSubSSTab1_Click(PreviousTabAsInteger)IfPreviousTab=1ThenAdodc1.Visible=FalseLabel4.Visible=TrueTimer1.Enabled=TrueEndIfIfPreviousTab=0ThenAdodc1.Visible=TrueLabel4.Visible=FalseTimer1.Enabled=FalseEndIfEndSubPrivateSubcmdMoveFirst_Click()Adodc1.Recordset.MoveFirstcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdMovePrevious_Click()cmdMoveNext.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThencmdMovePrevious.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubcmdMoveNext_Click()cmdMovePrevious.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThencmdMoveNext.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubcmdMoveLast_Click()Adodcl.Recordset.MoveLastcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdAddNew_Click()Adodc1.Recordset.AddNewtxt_CZRQ.Text=Datetxt_CBH.SetFocusEndSubPrivateSubcmdDelete_Click()Dimli_msgAsIntegerli_msg=MsgBox("記錄將被永久刪除,是否繼續(xù)?",vbYesNoOrvbDefaultButton2,〃蘇華程序設計〃)Ifli_msg=6ThenIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextEndIfIfAdodc1.Recordset.EOFAndAdodc1.Recordset.BOF=FalseThenAdodc1.Recordset.MovePreviousEndIfEndIfEndSubPrivateSubcmdUpdate_Click()Adodc1.Recordset.UpdateAdodc1.RefreshAdodc1.Recordset.MoveFirstcmdMovePrevious.Enabled=TruecmdMoveNext.Enabled=TrueEndSubPrivateSubcmdExit_Click()UnloadfrmCXXCLEndSubPrivateSubTimer1_Timer()IfLabel4.Left+Label4.Width>0ThenLabel4.Left=Label4.Left—200ElseLabel4.Left=Me.WidthEndIfEndSubPrivateSubForm_Unload(CancelAsInteger)OnErrorGoToHandllIfdb.Mode=16Thenrs.Closedb.Closedb.Mode=05Q設計網(wǎng)28EndIfSetfrmCXXCL=NothingExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃內(nèi)部錯誤〃&Err.Number&"蘇華設計〃Ifdb.Mode=16Thendb.Closedb.Mode=0EndIfEndSub5.4.2出鋁量窗體(frmCLL)模塊源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)OnErrorResumeNextMe.Adodcl.Caption=〃總記錄條數(shù):〃&(Me.Adodcl.Recordset.RecordCount)&Space(2)&〃當前記錄為:〃&(Me.Adodcl.Recordset.AbsolutePosition)EndSubPrivateSubForm_Load()Me.Adodc1.ConnectionString=ConStringMe.Adodcl.RecordSource="select*from出鋁信息〃Me.Adodc1.RefreshAdodcl.Left=0Adodcl.Width=Me.Width-150DataGridl.Left=0DataGridl.Top=0DataGridl.Width=Me.Width-l50DataGridl.Height=Adodcl.TopEndSubPrivateSubForm_Resize()IfMe.Width>l50AndMe.Height>Adodcl.Height*2-l00ThenDataGridl.Width=Me.Width-l50DataGridl.Height=Me.Height-Adodcl.Height*2-l00Adodcl.Width=Me.Width-l50Adodcl.Top=DataGridl.HeightEndIfEndSubPrivateSubMenu_SCBBWJ_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=l6Thenrs.Close

5Q設計網(wǎng)29db.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from出鋁信息〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRCLXX.DataSource=rsDRCLXX.ShowExitSubHandll:MsgBoxErr.Description,vbOKOnly,"內(nèi)部錯誤"&Err.Number&"蘇華設計〃Ifdb.Mode=16ThenEndEndSubPrivatedb.Closedb.Mode=0IfSubMenu_SJZH_Click()Dimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialogl.FileName=""Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls〃Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃將“出鋁信息"表轉(zhuǎn)換成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thendb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from出鋁信息〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range("Al:El").Value=Array(〃槽編號〃,〃出鋁量(噸)",〃開始時間〃,〃完成時間〃,〃出鋁用時(秒)")newsheet.Range("A2").CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strEndEndSubPrivatedb.Mode=0'0代表數(shù)據(jù)連接已經(jīng)斷開MsgBox〃數(shù)據(jù)轉(zhuǎn)換成功。",vbOKOnly,〃蘇華程序設計〃ElseMsgBox"此次操作已取消",vbOKOnly,"蘇華程序設計"EndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"蘇華程序設計"Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfEndSubPrivateSubMenuAbout_Click()ShellAboutMe.hwnd,"鋁電解出鋁信息數(shù)據(jù)表","指導老師:李界家"&Chr(13)&"設計者:蘇華"&Chr(13)&"演示時間:"&Date,Me.IconEndSubPrivateSubMenuExit_Click()UnloadfrmCLLEndSubPrivateSubMenuMoveFirst_Click()Adodc1.Recordset.MoveFirstMenuMovePrevious.Enabled=TrueMenuMoveNext.Enabled=TrueEndSubPrivateSubMenuMoveLast_Click()Adodc1.Recordset.MoveLastMenuMovePrevious.Enabled=TrueMenuMoveNext.Enabled=TrueEndSubPrivateSubMenuMoveNext_Click()MenuMovePrevious.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenMenuMoveNext.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubMenuMovePrevious_Click()MenuMoveNext.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenMenuMovePrevious.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubForm_Unload(CancelAsInteger)Ifdb.Mode=16Thenrs.Closedb.Closedb.Mode=0EndIfSetfrmCLL=NothingEndSub5.4.3數(shù)據(jù)表窗體(frmSJB)模塊源程序如下:DimdbAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimnewxlsAsExcel.ApplicationDimnewbookAsExcel.WorkbookDimnewsheetAsExcel.WorksheetPrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)Me.Adodc1.Caption=〃總記錄條數(shù):〃&(Me.Adodc1.Recordset.RecordCount)&"當前記錄為:〃&(Me.Adodc1.Recordset.AbsolutePosition)EndSubPrivateSubCommand1_Click()Adodc1.Recordset.MoveFirstCommand2.Enabled=TrueCommand3.Enabled=TrueEndSubPrivateSubCommand2_Click()Command3.Enabled=TrueIfNotAdodc1.Recordset.BOFThenAdodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenCommand2.Enabled=FalseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubCommand3_Click()Command2.Enabled=TrueIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenCommand3.Enabled=FalseAdodc1.Recordset.MovePreviousEndIfEndSubPrivateSubCommand4_Click()Adodc1.Recordset.MoveLastCommand2.Enabled=TrueCommand3.Enabled=TrueEndSubPrivateSubCommand5_Click()Adodcl.Recordset.AddNewText1.SetFocusEndSubPrivateSubCommand6_Click()DimmsgAsIntegerOnErrorGoToHandllmsg=MsgBox("記錄將被永久刪除,是否繼續(xù)?",vbYesNo,〃蘇華程序設計〃)Ifli_msg=6ThenIfNotAdodc1.Recordset.EOFThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextEndIfIfAdodc1.Recordset.EOFAndAdodc1.Recordset.BOF=FalseThenAdodc1.Recordset.MovePreviousEndIfEndIfExitSubHandll:MsgBoxErr.Description,vbOKOnly,"內(nèi)部錯誤"&Err.Number&"蘇華設計〃EndSubPrivateSubCommand7_Click()OnErrorGoToHandllAdodcl.Recordset.UpdateAdodcl.RefreshAdodcl.Recordset.MoveFirstExitSubHandll:MsgBoxErr.Description,vbOKOnly,〃內(nèi)部錯誤〃&Err.Number&"蘇華設計〃EndSubPrivateSubCommand8_Click()UnloadfrmSJBEndSubPrivateSubForm_Load()Me.Adodcl.ConnectionString=ConStringMe.Adodcl.RecordSource="select*from數(shù)據(jù)表〃Me.Adodcl.RefreshEndSubPrivateSubMenu_SCSJBB_Click()DimsqlAsStringOnErrorGoToHandllIfdb.Mode=l6Thenrs.Closedb.Closedb.Mode=0EndIfdb.ConnectionString=ConString

db.Opensql="select*from數(shù)據(jù)表〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetDRSJB.DataSource=rsDRSJB.ShowExitSubHandll:MsgBoxErr.Description,vbOKOnly,"內(nèi)部錯誤"&Err.Number&"蘇華設計〃EndEndSubPrivateIfdb.Mode=16Thendb.Closedb.Mode=0IfSubMenu_SJZH_Click()Dimls_strAsStringConstvbOFNOverwritePrompt=&H2&Me.CommonDialogl.FileName=""Me.CommonDialogl.Filter=〃所有文件(*.*)|*.*|Excel文件(*.xls)|*.xls"Me.CommonDialogl.FilterIndex=2Me.CommonDialogl.DialogTitle=〃將“數(shù)據(jù)表"表轉(zhuǎn)換成Excel文件〃Me.CommonDialogl.Flags=vbOFNOverwritePromptOnErrorGoToHandllMe.CommonDialogl.ShowSaveIfMe.CommonDialogl.FileName<>""ThenIfdb.Mode=l6Thendb.Closedb.Mode=0EndIfdb.ConnectionString=ConStringdb.Opensql="select*from數(shù)據(jù)表〃rs.Opensql,db,adOpenStatic,adLockReadOnlySetnewxls=CreateObject("Excel.Application")Setnewbook=newxls.Workbooks.AddSetnewsheet=newbook.Worksheets(l)newsheet.Range("Al:Dl").Value=Array("槽EndEndSubPrivatenewsheet.Range("A2").CopyFromRecordsetrsls_str=CommonDialogl.FileNamenewbook.SaveAsls_strnewxls.Quitrs.Closedb.Closedb.Mode=0MsgBox〃數(shù)據(jù)轉(zhuǎn)換成功。",vbOKOnly

溫馨提示

  • 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

提交評論