【文章內(nèi)容簡介】
6..1物資管理系統(tǒng)主窗體在主窗體中加入狀態(tài)欄控件,可以實(shí)時(shí)反映系統(tǒng)中的各個(gè)狀態(tài)的變化。狀態(tài)欄控件需要在通常的屬性窗口中設(shè)置一般屬性,還需要在其特有的彈出式菜單中進(jìn)行設(shè)置。在Visual Basic中可以用公用模塊來存放整個(gè)工程項(xiàng)目的函數(shù)、過程和全局變量等。這樣可以提高代碼的效率。在項(xiàng)目資源管理器中為項(xiàng)目添加一個(gè)Module,。 由于系統(tǒng)各個(gè)功能模塊都將頻繁使用數(shù)據(jù)庫中各種數(shù)據(jù),因此需要一個(gè)公共的數(shù)據(jù)操作函數(shù),用意執(zhí)行各種SQL語句。添加函數(shù)Execute SQL,代碼如下: ‘傳遞參數(shù)為查詢語句和查詢信息,返回以數(shù)據(jù)集對(duì)象形式保存的查詢結(jié)果Public Function ExecuteSQL(ByVal SQL _ As String, MsgString As String) _ As 39。執(zhí)行SQL語句,并返回記錄集對(duì)象‘聲明一個(gè)連接 Dim n As ‘聲明一個(gè)數(shù)據(jù)集對(duì)象 Dim rst As Dim sTokens() As String ‘異常處理 On Error GoTo ExecuteSQL_Error ‘用split函數(shù)產(chǎn)生一個(gè)包含各個(gè)子串的數(shù)組 sTokens = Split(SQL) ‘創(chuàng)建一個(gè)新連接 Set n = New ‘打開連接 ConnectString ‘判斷查詢語句是否包含指定內(nèi)容 If InStr(INSERT,DELETE,UPDATE, _UCase$(sTokens(0))) Then‘執(zhí)行查詢語句 SQL‘返回查詢信息 MsgString = sTokens(0) amp。 _ query successful Else ‘創(chuàng)建一個(gè)數(shù)據(jù)集對(duì)象Set rst = New ‘執(zhí)行查詢語句 Trim$(SQL), n, _ adOpenKeyset, _ adLockOptimistic39。 39。get RecordCount‘返回記錄集對(duì)象Set ExecuteSQL = rst‘返回查詢信息 MsgString = 查詢到 amp。 amp。 _ 條記錄 End IfExecuteSQL_Exit: ‘卸載對(duì)象 Set rst = Nothing ‘中斷連接 Set n = Nothing Exit Function ‘錯(cuò)誤信息ExecuteSQL_Error: MsgString = 查詢錯(cuò)誤: amp。 _ ‘顯示錯(cuò)誤信息 Resume ExecuteSQL_ExitEnd Function‘使用了connect string 函數(shù),這個(gè)函數(shù)用來連接數(shù)據(jù)庫Public Function ConnectString() _ As String’返回一個(gè)數(shù)據(jù)庫連接 ConnectString = FileDSN=。UID=sa。PWD=End Function在錄入有關(guān)信息時(shí),需要回車來進(jìn)入下一個(gè)文本框,這樣對(duì)軟件使用者非常方便。在所有的功能模塊都需要這個(gè)函數(shù),所以將它放在功用模塊,代碼如下:Public Sub EnterToTab(Keyasc As Integer)‘判斷是否為回車鍵If Keyasc = 13 Then‘轉(zhuǎn)換成Tab鍵 SendKeys {TAB} End IfEnd SubKeyasc用來保存當(dāng)前按鍵,SendKeys函數(shù)用來指定的按鍵。一旦按下回車鍵,將返回Tab鍵,狹義個(gè)控件自動(dòng)獲得輸入焦點(diǎn)。 添加全局變量,用來記錄各個(gè)窗體的讀寫狀態(tài),代碼如下: Public flagMedit As BooleanPublic flagIedit As BooleanPublic flagLedit As BooleanPublic flagOedit As BooleanPublic gintMmode As IntegerPublic gintImode As IntegerPublic gintLmode As IntegerPublic gintOmode As IntegerGintMmode變量用來記錄是添加狀態(tài)還是修改狀態(tài),賦值1為添加,賦值2為修改。FlagMedit變量用來標(biāo)示是否進(jìn)入修改的窗體。由于物資管理信息管理系統(tǒng)啟動(dòng)后,需要對(duì)用戶進(jìn)行判斷。如果登錄者是授權(quán)用戶,將進(jìn)入系統(tǒng),否則將停止程序的執(zhí)行。這個(gè)判斷需要在系統(tǒng)運(yùn)行的最初進(jìn)行,因此代碼放在公用模塊中。 系統(tǒng)用戶管理模塊的創(chuàng)建用戶管理模塊主要實(shí)現(xiàn):l 用戶登錄l 添加用戶l 修改用戶密碼 用戶登錄窗體的創(chuàng)建 用戶登錄窗體其中注意adodc屬性的設(shè)置。同時(shí)應(yīng)該將文本框的內(nèi)容通過adodc連接到數(shù)據(jù)庫。代碼如下:Private Sub txtUserName_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then End IfEnd SubPrivate Sub txtPassword_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then user_ID=39。 amp。 amp。 39。 SQL = SELECT user_ID FROM user_Info WHERE user_ID LIKE = SQL Static i As Integer If And i 3 Then MsgBox 用戶名錯(cuò)誤,請(qǐng)重新輸入!, 32, 提示信息 i = i + 1 = Exit Sub End If user_PWD=39。 amp。 amp。 39。 SQL = SELECT user_PWD FROM user_Info WHERE user_ID LIKE = SQL = SQL If And i 3 Then MsgBox 密碼錯(cuò)誤,請(qǐng)重新輸入!, 32, 提示信息 i = i + 1 = Exit Sub End If If i = 3 Then MsgBox 請(qǐng)不起,您無權(quán)登錄本系統(tǒng)!, 16, 提示信息 Exit Sub End If = Driver={SQL Server}。Server=WWWA0DDA338040。Database=Material Unload Me = = End IfEnd Sub 添加用戶窗體的創(chuàng)建選擇“管理系統(tǒng)/添加用戶”菜單,將出現(xiàn)如圖所示的窗體 添加用戶窗體代碼如下:Private Sub Command1_Click() Dim txtSQL As String Dim mrc As Dim MsgText As String If Trim(Text1(0).Text) = Then MsgBox 請(qǐng)輸入用戶名稱, vbOKOnly + vbExclamation, 警告 Exit Sub Text1(0).SetFocus Else txtSQL = select * from user_Info Set mrc = ExecuteSQL(txtSQL, MsgText) While ( = False) If Trim((0)) = Trim(Text1(0)) Then MsgBox 用戶已經(jīng)存在,請(qǐng)重新輸入用戶名!, vbOKOnly + vbExclamation, 警告 Text1(0).SetFocus Text1(0).Text = Text1(1).Text = Text1(2).Text = Exit Sub Else End If Wend End If If Trim(Text1(1).Text) Trim(Text1(2).Text) Then MsgBox 兩次輸入密碼不一樣,請(qǐng)確認(rèn)!, vbOKOnly + vbExclamation, 警告 Text1(1).SetFocus Text1(1).Text = Text1(2).Text = Exit Sub Else If Trim(Text1(1).Text) = Then MsgBox 密碼不能為空, vbOKOnly + vbExclamation, 警告 Text1(1).SetFocus Text1(1).Text = Text1(2).Text = Else (0) = Trim(Text1(0).Text) (1) = Trim(Text1(1).Text) MsgBox 用戶添加成功