【正文】
版本 第 17 頁 41 物資管理信息系統(tǒng)窗體圖 在主窗體中加入狀態(tài)欄控件,可以實時反映系統(tǒng)中的各個狀態(tài)的變化。選中狀態(tài)欄控件,單擊鼠標(biāo)右鍵,選中 Property 菜單,然后設(shè)置屬性。 創(chuàng)建主窗體的菜單 在主窗體中,單擊鼠標(biāo) 右鍵,選擇彈出式菜單中的 MenuEditor,創(chuàng)建如圖所示的菜單結(jié)構(gòu): 42 主窗體的菜單圖 創(chuàng)建公用模塊 在 VisualBasic 中可以用公用模塊來存放整個工程項目公用的函數(shù),過程和全局變量等。在項目資源管理器中為項目添加一個 Module,保存為 Modulel bas。 由于系統(tǒng)中各個功能模塊都將頻繁使用數(shù)據(jù)庫中的各個數(shù)據(jù),因此需要一個公共的數(shù)據(jù)操作函數(shù),用以執(zhí)行各種 SQL 語句。executes SQL and returns Recordset Dim n As Dim rst As Dim sTokens() As String On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set n = New ConnectString If InStr(INSERT,DELETE,UPDATE, _ UCase$(sTokens(0))) Then SQL MsgString = sTokens(0) amp。 39。 amp。 _ Resume ExecuteSQL_Exit End Function 在 ExecuteSQL 函數(shù)中使用了 Connect String 函數(shù),這個用來連接數(shù)據(jù)庫,代碼如下: Public Function ConnectString() _ As String 39。UID=sa。在所有的功能模塊都需要這個函數(shù),所有將它放在公用模塊中,代碼如下: Public Sub EnterToTab(Keyasc As Integer) If Keyasc = 13 Then SendKeys {TAB} End If End Sub Keyasc 用來保存當(dāng)前按鍵, SendKeys 函數(shù)用來指定的按鍵。 添加全局變量,用來記錄各個窗體的讀寫狀態(tài),代碼如下: Public fMainForm As frmMain Public flagMedit As Boolean Public flagIedit As Boolean Public flagLedit As Boolean 計算機(jī)畢業(yè)設(shè)計:倉庫管理系統(tǒng) vb+ACCESS 版本 第 20 頁 Public flagOedit As Boolean Public gintMmode As Integer Public gintImode As Integer Public gintLmode As Integer Public gintOmode As Integer gintMmode 變量用來記錄是添加狀態(tài)還是修改狀態(tài),賦值 1 為添加,賦值 2 為修改。 由于倉庫管理信息系統(tǒng)啟動后,需要對用戶進(jìn)行判斷。這個判斷需要在系統(tǒng) 運(yùn)行的最初進(jìn)行,因此將代碼放在公用模塊中。 ● 修改倉庫基本信息。 ● 查詢倉庫基本信息。 43 倉庫物資信息窗體圖 在窗體上放置多個文本框,用來輸入倉庫基本信息;兩個按鈕用來確定是否添加倉庫信息;多個標(biāo)簽用來提示文本框中需要輸入的內(nèi)容。 添加 ElseIf gintMmode = 2 Then Set mrc = ExecuteSQL(txtSQL, MsgText) If = False Then With mrc For intCount = 0 To 4 txtItem(intCount) = .Fields(intCount) Next intCount End With txtItem(0).Enabled = False End If = amp。如果是添加狀態(tài),文本框?qū)⑶宄齼?nèi)容,窗體有提示信息;如果是修改狀態(tài),將顯示當(dāng)前的記錄。在倉庫管理中,所有倉庫都有唯一的編號,并且不同型號的倉庫對應(yīng)不同的編號。最后根據(jù)狀態(tài)來顯示相應(yīng)的信息:如果是添加狀態(tài),將提示添加成功,然后重新顯示并清空所有的文本框,以便繼續(xù)添加記錄;如果處于修改狀態(tài),將提示修改成功,然后更新所有記錄的列表。 Private Sub txtItem_GotFocus(Index As Integer) txtItem(Index).SelStart = 0 txtItem(Index).SelLength = Len(txtItem(Index)) End Sub 單擊按鈕 cmdedit 取消添加倉庫信息,代碼如下: Private Sub cmdExit_Click() If mblChange And Then If MsgBox(保存當(dāng)前記錄的變化嗎? , vbOKCancel + vbExclamation, 警告 ) = vbOK Then 39。 44 倉庫基本信息修改圖 載入窗體時,觸發(fā)窗體的 Load 事件,顯示當(dāng)前數(shù)據(jù)庫中所有的記錄,代碼如下:調(diào)用showTitle 函數(shù),顯示表頭,代碼如下調(diào)用 showData 函數(shù),顯示記錄列表,代碼如下: Private Sub Form_Load() ShowTitle ShowData flagMedit = True End Sub 調(diào)用 showtitle 函數(shù),顯示表頭,代碼如下: 39。固定表頭 .FixedRows = 1 39。表頭項居中 .FillStyle = flexFillRepeat .Col = 0 .Row = 0 .RowSel = 1 .ColSel = .Cols 1 .CellAlignment = 4 39。顯示 Grid 的內(nèi)容 Private Sub ShowData() Dim i As Integer Set mrc = ExecuteSQL(txtSQL, MsgText) With msgList .Rows = 1 Do While Not .Rows = .Rows + 1 For i = 1 To Select Case (i 1).Type Case adDBDate .TextMatrix(.Rows 1, i) = Format((i 1) amp。 End Select Next i Loop End With End Sub 選擇記錄,然后單擊鼠標(biāo)右鍵,將觸發(fā) MouseUp 事件,并出現(xiàn)彈出式菜單。右鍵彈出 計算機(jī)畢業(yè)設(shè)計:倉庫管理系統(tǒng) vb+ACCESS 版本 第 26 頁 If Button = 2 And Shift = 0 Then PopupMenu End If End Sub 當(dāng)窗口變化時,需要調(diào)整標(biāo)簽和表格的位置,使標(biāo)簽始終處于窗體的最上方,而表格始終處于標(biāo)簽的下方。邊界處理 If 10 * Then Exit Sub End If If + / 2 Then Exit Sub End If 39。選擇相應(yīng)記錄,單擊鼠標(biāo)右鍵,選擇彈出式菜單,將刪除當(dāng)前記錄,代碼如下: Private Sub menuDeletematerial_Click() Dim txtSQL As String Dim intCount As Integer Dim mrc As Dim MsgText As String If flagMedit Then If 1 Then If MsgBox(真的要刪除這條文件記錄么? , vbOKCancel + vbExclamation, 警告 ) = vbOK Then intCount = txtSQL = delete from material where wzid=39。 Trim((intCount, 1)) amp。 Set mrc = ExecuteSQL(txtSQL, MsgText) Unload frmMater = select * from material End If End If End If End Sub 4:查詢司機(jī)信息窗體的創(chuàng)建 選擇“倉庫基本信息管理查詢倉庫基本信息”菜單,將出現(xiàn)如圖所示的窗體。 計算機(jī)畢業(yè)設(shè)計:倉庫管理系統(tǒng) vb+ACCESS 版本 第 28 頁 45 倉庫基本信息查詢圖 查詢倉庫基本信息窗體包括的控件及其屬性設(shè)置見表。單擊“確定”按鈕,觸發(fā) Click 事件進(jìn)行查詢,代碼如如下: Private Sub cmdOK_Click() Dim txtSQL As String Dim sQSql As String If chkItem(0).Value = vbChecked Then sQSql = wzname =39。 Trim(txtItem(0) amp。 39。 ) = Then sQSql = wzspec =39。 Trim(txtItem(1) amp。 39。 and wzspec = 39。 Trim(txtItem(1) amp。 39。 sQSql End If End Sub 程序首先判斷查詢方式,如果沒有設(shè)置查詢方式將顯示提示信息;然后對查詢內(nèi)容進(jìn)行組合,組成 SQL 語句,進(jìn)行查詢。運(yùn)用循環(huán)將每一條記錄的每一個字段顯示出來。 入庫信息管理模塊的創(chuàng)建 入庫信息管理模塊主要實現(xiàn)如下功能: ● 添加入庫信息。 ● 刪除入庫信息。 1:添加倉庫入庫信息窗體的創(chuàng)建 選擇“倉庫入庫信息管理添加倉庫入庫信息”菜單,將出現(xiàn)如圖所示的窗體。將各種文本框放在窗體的框架中,組成“倉庫信息”,“入庫信息”兩部分。 Int((99 10 + 1) * Rnd + 10) End Function 隨機(jī)編號前 12 位由當(dāng)前時間決定,后兩位由隨機(jī)數(shù)產(chǎn)生, 輸入完內(nèi)容,單擊“保存”按鈕,觸發(fā) Click 事件,首先檢查文本內(nèi)容是否符合格式要求,然后判斷是否有重復(fù)記錄,并更新倉庫余額表中的相關(guān)信息,最后添加內(nèi)容到數(shù)據(jù)庫,代碼見附錄: 這里很重要的一點(diǎn)是:在添加倉庫入庫信息的同時,更新倉庫余額表中的信息。 計算機(jī)畢業(yè)設(shè)計:倉庫管理系統(tǒng) vb+ACCESS 版本 第 31 頁 47 修改倉庫入庫信息圖 窗體中放置了一個表格控件,所有倉庫入庫記錄都顯示在里面。 選擇“修改倉庫入庫信息”命令,將觸發(fā) menuModifymaterialin 的 Click 事件,代碼如下 : Private Sub menuModifymaterialin_Click() Dim intCount As Integer If flagIedit Then If 1 Then gintImode = 2 intCount = = select * from msave where rk