帥 露 王 彬 蒲 弦 帥志強
中國成達工程有限公司 成都 610041 莆田學院 莆田 351100
靜設備接管法蘭匯總表自動生成軟件的開發(fā)
帥 露*王 彬 蒲 弦 帥志強
中國成達工程有限公司 成都 610041 莆田學院 莆田 351100
為提高設備詳細設計階段制作法蘭接管匯總表的效率和質(zhì)量,編制自動生成程序。先利用Excel制作接管法蘭匯總表模板文件,其次利用Microsoft SQL Server建立接管法蘭匯總表相關(guān)參數(shù)數(shù)據(jù)庫,最后通過C#編程,實現(xiàn)對SQL相關(guān)參數(shù)信息的查詢,Excel表格生成的控制,從而完成接管法蘭匯總表的自動生成軟件的開發(fā)。結(jié)果表明,所編制的軟件能夠完成對接管法蘭匯總表的自動生成,生成文件能夠滿足施工要求。
接管法蘭匯總表 模塊化 數(shù)據(jù)庫 軟件開發(fā)
在工程項目詳細設計階段,靜設備專業(yè)需要繪制大量施工圖,主要包括裝配圖、零部件圖及接管法蘭匯總表等。其中接管法蘭匯總表由于內(nèi)容多而繁瑣,不僅費工、費時,而且極易出現(xiàn)錯誤。另一方面接管法蘭匯總表形式相對單一,主要在于遵循標準標記規(guī)定進行參數(shù)表達。因此若能將其模塊化,既能提工作效率,又能提高設計質(zhì)量。
本文主要思路是通過C#編寫用戶界面,響應用戶操作,然后訪問相關(guān)數(shù)據(jù)庫進行查詢,最后將查詢結(jié)果按相應標記方法輸出到預先制作好的Excel模板中,完成接管法蘭匯總表的制作。其中C#與數(shù)據(jù)庫的交互通過ADO.NET技術(shù)完成[1,2],而對Excel則通過Excel對象模型進行訪問[3]。
考慮到接管數(shù)量的差異,制作兩種不同規(guī)格(A4,A2大小)的Excel模板用作接管法蘭匯總表的基本圖框,A4大小的Excel模板見圖1,程序運行時會根據(jù)總項目數(shù)選擇相應的模板制作法蘭匯總表。
圖1 接管法蘭匯總表Excel模板
由模板文件可知,其主要輸出的相關(guān)信息:接管號、件號、圖號或標準號、名稱、數(shù)量、材料、單重、總重及備注等。
制作法蘭匯總表主要涉及接管、法蘭、人孔、補強板、管件等零件相關(guān)參數(shù),本文參考相關(guān)標準,利用Microsoft SQL Server建立各部件的標準參數(shù)數(shù)據(jù)表。其中接管參數(shù)主要包括公稱直徑、外徑、壁厚等級等,而法蘭參數(shù)除了公稱直徑、壓力等級等參數(shù)外,還包括法蘭外徑、法蘭厚度等參數(shù),雖然這些參數(shù)對于制作法蘭匯總表并非必須,但是考慮到數(shù)據(jù)的完整性以及后續(xù)功能的完善和擴展,仍然將其錄入,以備不時之需。
3.1 界面設計
接管法蘭匯總表自動生成程序的主界面見圖2,其中涉及的主要C#控件有Lable、TextBox、Button、Panel、ListBox、ComboBox、TabControl、CheckBox及DataGridView等。
圖2 接管法蘭匯總表自動生成程序用戶界面
對于某一管口而言,當其是人孔時,法蘭界面便無需顯示,同時考慮到某管口可能通過其他零部件圖表達,因此程序中還添加了自定義選項,以提高自主性,這部分功能采用CheckBox和TabControl控件來實現(xiàn),默認顯示法蘭選項,當選擇其它選項顯示的同時將隱藏法蘭選項,具體效果見圖3。
圖3 人孔、自定義TabControl界面
對于接管參數(shù),程序默認為標準管,當為鍛件管時只需勾選“鍛件管” CheckBox控件便可以激活相應的用戶輸入控件。出于便利性考慮,程序允許用戶只需要在一個界面上輸入就可以完成匯總表的制作,因此這里采用ComboBox控件來容納管口信息,通過后臺的關(guān)聯(lián)來保持各控件顯示與管口信息的一致性,同時考慮到直觀性,采用DataGridView控件對匯總表進行初步顯示,便于用戶發(fā)現(xiàn)錯誤并進行修改。
3.2 程序設計
主要介紹程序設計中的關(guān)鍵代碼,闡明程序設計的思路和具體實現(xiàn)過程。
3.2.1 C#與Microsoft SQL Server交互
與Microsoft SQL Server交互主要通過ADO.NET技術(shù)完成[1],本程序涉及的SqlClient類主要有SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader等,其具體功能見表1。
表1 常用的SqlClient類
但在使用ADO.NET之前,需要先添加相關(guān)命名空間,然后連接SQL Server數(shù)據(jù)庫,其具體代碼如下。
using System.Data;
using System.Data.SqlClient; //添加命名空間
string connString = @"server=DEWINSPRING;
integrated security=true;
database=STGB";
SqlConnection conn = new SqlConnection(connString); //連接數(shù)據(jù)庫
連接數(shù)據(jù)庫后可以用兩種方式對數(shù)據(jù)庫進行訪問[1],① 始終保持數(shù)據(jù)庫打開狀態(tài),待用戶結(jié)束所有對數(shù)據(jù)庫的操作再將其關(guān)閉,但這種方法必須建立與數(shù)據(jù)庫的活動連接,這無疑將造成資源的巨大浪費;② 更加實用的方式是使用數(shù)據(jù)適配器對數(shù)據(jù)庫進行訪問,其不需要一直保持數(shù)據(jù)庫為打開狀態(tài),而是將需要修改的數(shù)據(jù)保存到本地,以脫機的方式進行處理,等工作結(jié)束之后再將所有修改保存回數(shù)據(jù)源中,其實現(xiàn)的具體代碼如下。
SqlDataAdapter da = new SqlDataAdapter();
//數(shù)據(jù)庫法蘭參數(shù)賦值
da.SelectCommand = new SqlCommand(qry, conn);
da.Fill(dflange);
執(zhí)行以上代碼,能夠?qū)⒎ㄌm參數(shù)存儲到本地數(shù)組中以便后續(xù)使用,其他參數(shù)可以用同樣的方法獲得。
3.2.2 數(shù)據(jù)與交互界面的關(guān)聯(lián)
交互界面的關(guān)聯(lián)主要包括兩個方面:① 用戶進行界面操作時,后臺響應完成相應動作;② 由于本程序允許用戶在一個界面中操作,因此當用戶選擇不同管口時,應該將其對應管口的參數(shù)反映到當前界面上,也就是說將界面顯示和各管口的實時數(shù)據(jù)關(guān)聯(lián)起來。下面以法蘭參數(shù)為例說明將數(shù)據(jù)還原于界面顯示的具體過程。
if (listBox1.SelectedItem != null)//當有管口被選中時
{
int i;
i=listBox1.SelectedIndex;//獲取被選中管口的索引
//-------復原管口參數(shù)------//
//復原法蘭參數(shù)
nozzlenumber.Text = listBox1.SelectedItem.ToString();
listBox1.SelectedItem=dt1.Rows[i]["nozzlenumber"];
flangestd.SelectedItem=dt1.Rows[listBox1.SelectedIndex]["flangestd"];
……
通過以上代碼便將用戶對某管口法蘭的選擇重新顯示,使用戶清楚對管口進行的操作以便進一步修改。
3.2.3 C#與Excel的交互
C#通過Excel對象模型完成對Excel的訪問,其中最常用的對象有Application、Workbook、Worksheet、Range等[3]。但在應用其對象之前必須先添加Excel的COM組件以及其命名空間,其具體方法是在“項目”中選擇“添加”再選擇“COM”組件中的“Microsoft Office 15.0 Object Library”添加,并引用其命名空間即可。C#打開Excel模板文件的代碼如下。
Excel.Application excel = new Excel.Application();
Excel.Workbook book = excel.Application.Workbooks.Add(@"C: mytest.xlsx");
打開Excel模板文件后就可以通過Range等對象對其內(nèi)容進行修改,具體方法可以參考相應文獻。
3.3 程序的打包和發(fā)布
本程序采用微軟自帶的“InstallShield Limited Edition Project”程序進行打包,程序完成時只需要對項目添加“安裝和部署”,參考相關(guān)提示便能完成程序的打包和發(fā)布,最終生成本程序的安裝包[4]。
軟件運行結(jié)果及生成的接管法蘭匯總表分別見圖4和圖5。
圖4 法蘭接管匯總表運行結(jié)果界面
圖5 生成法蘭接管匯總表界面
由此可知本軟件可以基本實現(xiàn)法蘭匯總表的自動生成,而且生成法蘭匯總表基本滿足設備施工圖的技術(shù)要求。
應用此軟件自動生成接管法蘭匯總表不僅能提高效率還能避免差錯,既省時,又省力。不僅如此,所建立的數(shù)據(jù)庫還可能為程序的后續(xù)開發(fā)和完善提供數(shù)據(jù)支持,而開發(fā)本程序的方法對于今后相關(guān)程序的開發(fā)也具有借鑒意義。
1 阿格沃爾,哈德萊斯頓,沈潔等. C# 2008數(shù)據(jù)庫入門經(jīng)典[M].清華大學出版社, 2009.
2 Karli Watson Marco Bellinaso,康博. C#入門經(jīng)典[M].清華大學出版社, 2002.
3 李文駿,黃金晶. C#.NET開發(fā)Excel報表淺析[J]. 軍民兩用技術(shù)與產(chǎn)品, 2010, (12): 39-42.
4 劉 藝. InstallShield 2000使用詳解[M].機械工業(yè)出版社, 2002.
2016-07-04)
*帥 露:助理工程師。2015年畢業(yè)于大連理工大學化工機械專業(yè)獲得碩士學位。從事靜設備工程設計與研究工作。 聯(lián)系電話:(028) 65537580,Email:ShuaiLu@chengda.com。