国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用Excel VBA與MySQL開發(fā)航空維修用網(wǎng)絡(luò)錄入系統(tǒng)

2020-12-14 04:27鄧?yán)?/span>
科技風(fēng) 2020年32期
關(guān)鍵詞:數(shù)據(jù)庫

摘 要:針對航空維修開發(fā)的一套網(wǎng)絡(luò)數(shù)據(jù)錄入系統(tǒng)。運(yùn)用Excel VBA制作本地端界面和程序,并通過網(wǎng)絡(luò)訪問WAMP搭建的服務(wù)器端MySQL數(shù)據(jù)庫。從而實(shí)現(xiàn)多地操作和數(shù)據(jù)統(tǒng)一,同時保障運(yùn)行效率和數(shù)據(jù)安全。

關(guān)鍵詞:Execl;VBA;MySQL;數(shù)據(jù)庫;航空維修;錄入系統(tǒng)

一、緒論

在航空維修業(yè)中工作記錄是必不可少的,傳統(tǒng)的Excel表單無法多地操作、分散的數(shù)據(jù)很難統(tǒng)一、越來越大容量也會減慢運(yùn)行速度,還存在容易被篡改的風(fēng)險(xiǎn)。但是通過Excel鏈接MySQL數(shù)據(jù)庫可以解決這些問題,同時該數(shù)據(jù)庫是開源免費(fèi)的,因此需要基于Excel VBA+MySQL運(yùn)行環(huán)境的方案。Excel鏈接數(shù)據(jù)庫的資源較少,且主要集中在微軟自家的Access和MsSQL方面。鏈接MySQL的資料則更少,也成為項(xiàng)目的最大挑戰(zhàn)。

二、運(yùn)行環(huán)境

開發(fā)軟件為Excel、MySQL和WAMP2.0。Excel作為一套優(yōu)秀的電子表格軟件,內(nèi)嵌的VBA語言是寄生于VB應(yīng)用程序的版本。MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其特色是體積小、速度快、代碼開源免費(fèi)和強(qiáng)大的社區(qū)支持。WAMP則是搭建動態(tài)網(wǎng)站服務(wù)器的開源免費(fèi)軟件,擁有一鍵構(gòu)建服務(wù)器的強(qiáng)大功能。

首先在服務(wù)器端安裝WAMP來構(gòu)建MySQL數(shù)據(jù)庫,然后在本地端的Excel內(nèi)安裝了數(shù)據(jù)庫插件ADO和更新本地端的數(shù)據(jù)庫類。整個運(yùn)行環(huán)境就構(gòu)建完成。

三、本地端結(jié)構(gòu)

(一)程序界面

通過VBA控件制作登入、數(shù)據(jù)錄入和查詢等窗體。在激活Excel時,隱藏Excel原始程序框體和所有表單界面,只顯示登入窗體,隨后根據(jù)不同的按鈕控件激活不同的功能窗體。使程序更具有界面感。

(二)表單界面

Excel的表單將全部被隱藏(不能被選中),起到保證數(shù)據(jù)安全;同時表單用于基礎(chǔ)信息保存、數(shù)據(jù)緩存和顯示確認(rèn)?;A(chǔ)信息主要包括使用說明、人員信息和登入權(quán)限。數(shù)據(jù)緩存主要用于緩存?zhèn)鬏斨练?wù)器的數(shù)據(jù),為了實(shí)現(xiàn)斷網(wǎng)(斷開服務(wù)器)操作的特性,和實(shí)現(xiàn)按批次(多條)傳輸?shù)奶匦浴o@示確認(rèn)用于實(shí)現(xiàn)錄入和查詢時的信息確認(rèn)特性。

(三)VBA代碼分布

位于Microsoft Excel對象的Thisworkbook內(nèi)代碼的功能是在啟動時對框體和表單進(jìn)行隱藏和格式化,在關(guān)閉時進(jìn)行恢復(fù)。位于各窗體內(nèi)代碼的功能是實(shí)現(xiàn)各種窗體間邏輯操作和與數(shù)據(jù)庫的傳輸。位于各模塊內(nèi)的代碼類和函數(shù)的功能是提高代碼的復(fù)用性。

四、主要功能和代碼

(一)登入窗體

主要功能是登入、權(quán)限識別和隨機(jī)小提示。

(二)數(shù)據(jù)錄入窗體

主要功能是自動匹配(日期、機(jī)號和航班號的前綴、人員),數(shù)據(jù)緩存、多數(shù)據(jù)提交和顯示確認(rèn)。

Private Sub CommandButton2_Click()'”完成”按鈕執(zhí)行本地?cái)?shù)據(jù)緩存或數(shù)據(jù)庫傳輸操作;

If TextBox1.Value="" Or TextBox2.Value="" Or TextBox3.Value="" Or TextBox4.Value="" OrTextBox5.Value="" Then '判斷沒有新數(shù)據(jù);

If Sheet3.Range("A65536").End(xlUp).Row > 2 Then '判斷緩存數(shù)據(jù)(除表頭)大于1條時;

F_Import '調(diào)用數(shù)據(jù)庫傳輸類;

End If

Else '有新數(shù)據(jù)時;

ForButton_F '調(diào)用數(shù)組類,是''下一條”按鈕的主要代碼,將數(shù)據(jù)緩存至本地表單中;

If Sheet3.Range("A65536").End(xlUp).Row > 2 Then

F_Import

End If

End If

End Sub

Public Sub F_Import()'用insert語句在數(shù)據(jù)庫內(nèi)插入記錄;

Dim rngCur As Range,Cell As Range,i As Integer

Dim sInsert As String,iRowscount As Integer

Dim Con As ADODB.Connection

With Worksheets("未導(dǎo)入非例行")

Set rngCur=.Range(.Range("a2"),.Range("a2").End(xlDown))'獲取數(shù)據(jù)區(qū)域;

End With

For Each Cell In rngCur '調(diào)用數(shù)據(jù)聯(lián)合函數(shù),把數(shù)據(jù)添加到SQL命令字符串sInsert;

i=1+i

If i=1 Then

sInsert="("+JOINFI(Cell.Offset(0,1).Resize(1,17).Value,",","""")+")"

Else

sInsert=sInsert+","+"("+JOINFI(Cell.Offset(0,1).Resize(1,17).Value,",","""")+")"

End If

Next Cell

sInsert="inser`workrecord`(`fillday`,`groupname`,`day`,`linnum`,`bnum`,`cat1`,`yenum`,`comments`,`finder`,`mainworker`,`parnter1`,`parnter2`,`cat2`,`costhour`,`nolynot`,`shifter`,`last`)value"+sInsert

'構(gòu)造插入SQL命令字符串sInsert,對應(yīng)數(shù)據(jù)庫workrecord表和相應(yīng)的表頭,注意空格和符號類型;

Set Con=New ADODB.Connection '執(zhí)行插入數(shù)據(jù)操作;

Con.ConnectionString="Driver={MySQL ODBC 5.1 Driver};"+_ '調(diào)用驅(qū)動版本;

"Server=10.210.000.14;"+_ '服務(wù)器的IP地址,建議使用靜態(tài)地址;

"DB=workdatabase;"+_ '數(shù)據(jù)庫名;

"user=root;"+_ '賬號;

"PassWord='root';"+_ '密碼;

"OPTION=3;"+_

"Stmt=Set Names 'utf8_general_ci';" '中文格式;

Con.Open

Con.Execute sInsert,iRowscount,adCmdText '執(zhí)行插入數(shù)據(jù)操作;

Con.Close:Set Con=Nothing

End Sub

Public Function JOINFI(arr As Variant,delimiter As String,Optional quotes As String="")As String

For Each el In arr '數(shù)據(jù)聯(lián)合函數(shù),用引號和分隔符對數(shù)據(jù)進(jìn)行聯(lián)合。

i=1+i

If i =1 Then

JOINFI=quotes & el & quotes

Else

JOINFI=JOINFI & delimiter & quotes & el & quotes

End If

Next el

End Function

(三)查詢窗體

主要功能是按范圍查詢本月或上月數(shù)據(jù)。

'本月全部數(shù)據(jù)的查詢代碼;

Set Rec=Con.Execute("select * from `workrecord` where

date_format(`fillday`,'%Y%M')=date_format(curdate(),'%Y%M')",iRowscount,adCmdText)

Sheet2.Range("a2").CopyFromRecordset Rec'復(fù)制到指定的表單位置;

'上月班組數(shù)據(jù)函數(shù)的查詢代碼,groupname為班組變量。

Set Rec=Con.Execute("select * from `workrecord` where `groupname`='" & groupname & "' and date_format(`fillday`,'%Y-%m')=date_format(DATE_SUB(curdate(),INTERVAL 1 MONTH),'%Y-%m')")

五、結(jié)語

運(yùn)用WAMP構(gòu)建MySQL服務(wù)器端和Excel VBA編寫的本地端程序(約702K)的方案不光運(yùn)行環(huán)境構(gòu)建快,軟件成本也低。還有多地操作、斷網(wǎng)操作和數(shù)據(jù)統(tǒng)一的特性,也不會隨數(shù)據(jù)量的增加而運(yùn)行變慢,完善的保護(hù)機(jī)制也確保了可靠性。

參考文獻(xiàn):

[1]高智超,張志揆.將Excel數(shù)據(jù)導(dǎo)入MySQL中的兩種技巧[J].電腦編程技巧與維護(hù),2012,(19):39-40,48.

[2]張旭.利用Excel VBA設(shè)計(jì)制作應(yīng)用程序窗體[N].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010-12,22(4):41-45.

[3]湯清.利用VBA在Excel中開發(fā)應(yīng)用系統(tǒng)[J].電腦知識與技術(shù),2002,(1):31-33.

[4]王俊飛,唐克巖,向渝,陳偉.Excel VBA技術(shù)在中小制造企業(yè)信息管理系統(tǒng)中的應(yīng)用[J].機(jī)械設(shè)計(jì)與制造工程,2018-8,47(8):81-86.

作者簡介:鄧?yán)冢?983—),男,本科,工程師,北京飛機(jī)維修工程有限公司上海分公司,從事民航維修工作。

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫