VB+Access圖書管理系統(tǒng)_第1頁
VB+Access圖書管理系統(tǒng)_第2頁
VB+Access圖書管理系統(tǒng)_第3頁
VB+Access圖書管理系統(tǒng)_第4頁
VB+Access圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VB+Access設(shè)計圖書管理系統(tǒng)、需求分析在進行一個項目的設(shè)計之前,先要進行必要的需求分析?,F(xiàn)某圖書館需要管理其各種人員和圖書信息,希望實現(xiàn)辦公的信息化,通過建立一個圖書管理系統(tǒng)來管理圖書。其完成的功能如下:(i)可以實現(xiàn)圖書的登記、借閱和賠償?shù)墓芾怼?2)可以實現(xiàn)對圖書的各種信息的查詢,包括逐個瀏覽,以及對圖書信息的增加、刪除和編輯操作。另外,可以根據(jù)輸入的信息來檢索某個圖書的信息。(3)可以實現(xiàn)對管理人員的投訴管理。(4)可以實現(xiàn)對值班人員的管理。系統(tǒng)的功能模塊圖如圖1所示。本實例根據(jù)上面的設(shè)計規(guī)劃出的實體有圖書登記實體、圖書借閱實體、圖書賠償實體、查詢輸出實體、值班管理實體、投訴管理實

2、體。各個實體具體的描述E-R圖如下。圖書登記實體E-R圖如圖2所示。圖書借閱實體E-R圖如圖3所示。圖1系統(tǒng)的功能模塊圖圖3圖書借閱實體E-R圖圖書賠償實體E-R圖如圖4所示圖4圖書賠償實體E-R圖投訴管理實體E-R圖如圖5所示圖5投訴管理實體E-R圖值班管理實體E-R圖如圖6所示。查詢輸出實體E-R圖如圖7所示圖7查詢輸出實體E-R圖二、結(jié)構(gòu)設(shè)計根據(jù)上面的需求分析,設(shè)計好數(shù)據(jù)庫系統(tǒng),然后開發(fā)應(yīng)用程序可以考慮的窗體的系統(tǒng),每一個窗體實現(xiàn)不同的功能,可以設(shè)計下面的幾個模塊。圖書管理模塊:用來實現(xiàn)圖書的登記、借閱、賠償。 圖書資料模塊:用來實現(xiàn)圖書的查詢輸出。 值班管理模塊:用來實現(xiàn)管理人員的值班

3、瀏覽。 投訴管理模塊:用來實現(xiàn)對管理人員的投訴管理。 系統(tǒng)管理模塊:用來實現(xiàn)用戶的增加、刪除和修改等操作。三、數(shù)據(jù)庫設(shè)計這里的數(shù)據(jù)庫采用Access,用ADO作為連接數(shù)據(jù)對象。 、建立Access數(shù)據(jù)庫啟動Access,建立一個空的數(shù)據(jù)庫book.mdb,如圖8所示。使用程序設(shè)計器建立系統(tǒng)需要的表格如下。 書登記表,如圖9所示。圖8建立數(shù)據(jù)庫book.mdb圖9圖書登記表圖書借閱表,如圖10所示。圖書賠彳表,如圖11所示:”日X*前七號曲。MEY9Wr狗BR/峰式A霞JC酷或評息HAIt.4日mswi.txTSFHB仙童Vkrwfa而0tow日n“兒%*E印普4W也率*3jmait配同晃_I予

4、以世圖10圖書借閱表圖11圖書賠償表圖書資料表,如圖12所示。系統(tǒng)管理表,如圖13所示RMM.A直面畫I晨蕓.q,Jr.(-,t%X式 4幅14否*曷;中,I riu r*一*一 前 I1,IMIK 曲M m謁 空才一*21露事141S 12 TWt Vff 1 m - a華皆過累用刷hftx*處手七L里手均41fcdrU-涇通圖12圖書資料表圖13系統(tǒng)管理表投訴管理表,如圖14所示。x.aIWWK1IWfTl站*XEWWtJ修工一餐苗圖14投訴管理表值班管理表,如圖15所示。圖15值班管理表2、連接數(shù)據(jù)在VisualBasic環(huán)境下,選擇工程-引用命令,在隨后出現(xiàn)的對話框中選擇Microso

5、ftActiveXDataObjects2.0Library,然后單擊確定”按鈕,如圖16所示。圖16引用ADO連接數(shù)據(jù)庫在程序設(shè)計的公共本II塊中,先定義ADO連接對象。語句如下:PublicconnAsNewADODB.Connection標(biāo)記連接對象然后在子程序中,用如下的語句即可打開數(shù)據(jù)庫:DimconnectionstringAsStringconnectionstring=provider=Microsoft.Jet.oledb.4.0;&_datasource=book.mdbconn.Openconnectionstring3、設(shè)置ODBCVB的ADO對象是通過ODBC來訪問數(shù)

6、據(jù)庫,所以還要建立ODBC數(shù)據(jù)引擎接口打開控制面板中的管理工具”一數(shù)據(jù)源(ODBC1出現(xiàn)如圖17所示的對話框圖17ODBC對話框單擊添加”按鈕,出現(xiàn)創(chuàng)建新數(shù)據(jù)源對話框,如圖18所示。圖18創(chuàng)建新數(shù)據(jù)源對話框選擇MicrosoftAccessDriver(*.mdb),單擊完成”按鈕,出現(xiàn)如圖19所示對話框圖19設(shè)置連接數(shù)據(jù)源在數(shù)據(jù)源名文本框中添加一個名字,單擊確定”按鈕完成系統(tǒng)默認(rèn)連接設(shè)置。然后在ODBC對話框中單擊確定”按鈕完成ODBC設(shè)置。界面設(shè)計設(shè)計好的界面如圖20所示。圖20圖書管理系統(tǒng)界面這是一個多文檔界面(MDI)應(yīng)用程序,可以同時顯示多個文檔,每個文檔顯示在各自的窗體中。MDI應(yīng)

7、用程序中常有包含子菜單的窗體”選項,用于在窗體或文檔之間進行切換。菜單應(yīng)用程序中,有5個菜單選項,每個選項對應(yīng)著E-R圖的一個子項目。1、創(chuàng)建主窗體首先創(chuàng)建一個工程,命名為圖書管理系統(tǒng),選擇工程”-添加MDI窗體”命令,則在項目中添加了主窗體。該窗體的一些屬性如表1所示。表1主窗體的屬性屬性值Caption圖書管理系統(tǒng)NameMainMenuMainmenu1WindowstateMaxsizeWindowstate的值為Maxsize,即程序啟動之后自動最大化。將菜單”組件從工具箱”拖到窗體上。創(chuàng)建一個Text屬性設(shè)置為文件”的頂級菜單項,且?guī)в忻麨殛P(guān)閉”的子菜單項。類似地創(chuàng)建一些菜單項,如

8、表2所示。表2菜單項表菜單名稱Text屬性功能描述MenuItem1圖書管理頂級菜單,包含子菜單MenuItem2圖書登記調(diào)出圖書登記窗體MenuItem3圖書借閱調(diào)出圖書借閱窗體MenuItem4圖書賠償調(diào)出圖書賠償窗體MenuItem5圖書資料頂級菜單,包含子菜單MenuItem6查詢輸出調(diào)出查詢輸出窗體MenuItem7值班管理頂級菜單,沒有子菜單MenuItem8投訴管理頂級菜單,沒有子菜單MenuItem9系統(tǒng)管理頂級菜單,包含子菜單MenuItem10增加用戶調(diào)出用戶窗體MenuItem11修改密碼調(diào)出密碼窗體MenuItem12退出系統(tǒng)退出主窗體如圖21所示。圖21主窗體2、創(chuàng)建

9、各子窗體選擇工程”-添加窗體”命令,添加子窗體。在新建VisualBasic工程時自帶的窗體中,將其屬性MIDChild改成True,則這個窗體成為MID窗體的子窗體。在這個項目中,要創(chuàng)建的子窗體如表3所示。表3所有子窗體子窗體名Text圖書登記frmdengji圖書借閱frmjieyue圖書賠償frmpeichang增加新用戶frmadduser查詢輸出frmfind登錄系統(tǒng)frmlogin修改密碼frmchangepwd下面分別給出這些子窗體,以及它們所使用的控件。(1)圖書登記子窗體如圖22所示,其控件如表4所示盟曲更W:把麻pai-riHriihiiAiniaai-BiJ|4岬加上菊p

10、lUpiB!1:)1;.III9UBJl:jmJ:亡不理j圖22圖書登記子窗體表4圖書登記子窗體控件控件類別控件Name控件TextLabel1編號LabelLabel2書名Label3類型Label4購買日期Label5定價TextBoxText1(空)Text2(空)Text3(空)Text4(空)Text5(空)CommandButtonCommand1增加記錄Command2刪除記錄Command3下一條Command4上一條Command5第一條Command6最后一條Command7退出ADODataAdodcl(空)DataGridDataGridl(空)圖書借閱和圖書賠償子窗體

11、分別如圖23和圖24所示,因為它們的控件與圖書登記子窗體的雷同,在此不作介紹。圖23圖書借閱子窗體圖24圖書賠償子窗體(2)增加用戶子窗體如圖25所示,其控件如表5所示圖25增加用戶子窗體表5增加用戶子窗體控件控件類別控件Name控件TextLabelLabel1輸入用戶名Label2輸入密碼Label3確認(rèn)密碼Label4選擇權(quán)限TextBoxText1(空)Text2(空)Text3(空)ComboBoxComb1(空)CommandButtonCommandl確定Command2取消(3)修改密碼子窗體如圖26所示圖26修改密碼子窗體(4)庫房管理子窗體如圖27所示圖27庫房管理子窗體其

12、控件如表6所示。表6庫房管理子窗體控件控件類別控件Name控件TextTextBoxTextl(空)ComboBoxCombolMSFlexGridMSFlexGridl(5)查詢子窗體如圖28所示,其控件如表7所示圖28查詢子窗體表7查詢子窗體控件控件類別控件Name控件TextOptionButtonOption1按編號查詢Option2按購買日期查詢LabelLabel1從Label2到Label3從Label4年Label5月Label6日Label7到Label8年Label9月Label10日Combo(0)ComboBoxCombo1(空)Combo(1)ComboBoxComb

13、o1(空)Comboy(0)ComboBoxComboy(空)Comboy(1)ComboBoxComboy(空)Combom(0)ComboBoxCombom(空)Combom(1)ComboBoxCombom(空)Combod(0)ComboBoxCombod(空)Combod(1)ComboBoxCombod(空)CommandButtonCommandl查詢Command2取消(6)用戶登錄子窗體如圖29所示值班管理子窗體如圖30所示,其控件如表8所示圖29用戶登錄子窗體圖30值班管理子窗體(8)投訴管理子窗體如圖 31所示,其控件如表 9所示圖31投訴管理子窗體建立公共模塊1、顯示目

14、錄建立公共模塊可以提高代碼的效率,同時使得修改和維護代碼都很方便。創(chuàng)建公共模塊的步驟如下:(1)在菜單中選擇工程”一添加模塊”命令,則出現(xiàn)模塊對話框,如圖32所示。Module1(2)選擇模塊圖標(biāo)后,單擊打開按鈕,則模塊已經(jīng)添加到項目中了。默認(rèn)情況下名為圖32模塊對話框(3)在模塊中定義整個項目的公共變量。Public conn As New ADODB.Connection 標(biāo)記連接對象Public userID As String 標(biāo)記當(dāng)前用戶IDPublic userpow As String 標(biāo)記用戶權(quán)限Public find As Boolean 標(biāo)記查詢Public sqlfind

15、 As String 查詢語句Public rs data1 As New ADODB.RecordsetPublic findok As BooleanPublic frmdata As BooleanPublic Const keyenter = 13 enter 鍵的 ASCII 碼在主窗體添加完菜單之后,就要為各個子菜單創(chuàng)建事件處理程序。窗體代碼在本項目中,子菜單事件都是Click事件,這里先給出主窗體部分的代碼。下面是響應(yīng)“增加用戶”子菜單Click事件,調(diào)出增加用戶窗體代碼。PrivateSubadduser_Click()frmadduser.ShowEndSub下面是響應(yīng)“查詢

16、輸出”子菜單Click事件,調(diào)出查詢輸出窗體代碼。PrivateSubchaxunshuchu_Click()frmfind.ShowEndSub下面是響應(yīng)“退出”子菜單Click事件,調(diào)出退出窗體代碼。PrivateSubexit_Click()UnloadMeEndSub下面是響應(yīng)“圖書登記”子菜單Click事件,調(diào)出圖書登記窗體代碼。PrivateSubcheckin_Click()frmdengji.ShowEndSub下面是響應(yīng)“修改密碼”子菜單Click事件,調(diào)出修改密碼窗體代碼。PrivateSubchangepwd_Click()frmchangepwd.ShowEndSub下

17、面是響應(yīng)“圖書借閱”子菜單Click事件,調(diào)出圖書借閱窗體代碼。PrivateSubborrow_Click()frmjieyue.ShowEndSub下面是響應(yīng)“圖書賠償”子菜單Click事件,調(diào)出圖書賠償窗體代碼。PrivateSubtushupeichang_Click()frmpeichang.Show1EndSub下面是響應(yīng)“值班管理”菜單Click事件,調(diào)出值班管理窗體代碼。PrivateSubzhibanguanli_Click()frmzhiban.Show1EndSub下面是響應(yīng)“投訴管理”子菜單Click事件,調(diào)出投訴管理窗體代碼。PrivateSubtousuguanli

18、_Click()frmtousu.Show1EndSub2、各子窗體的代碼在各個子窗體建立好后,就可以根據(jù)各個子窗體的功能給它們添加相應(yīng)代碼了。(1) 圖書登記子窗體代碼本窗體用來填寫圖書登記的信息,用ADO來連接數(shù)據(jù)庫,是本窗體的重點。采用MDI的子程序,所以運行后,它出現(xiàn)在主程序的界面下,如圖33所示。圖33圖書登記子窗體按鈕控件要求先填寫基本信息,然后與數(shù)據(jù)庫信息比較。PrivateSubCommand1_Click()OnErrorGoToadderrTextl.SetFocusAdodcI.Recordset.AddNewExitSubadderr:MsgBoxErr.Descrip

19、tionEndSubPrivateSubCommand2_Click()OnErrorGoTodeleteerrWithAdodc1.RecordsetIfNot.EOFAndNot.BOFThenIfMsgBox(刪除當(dāng)前記錄嗎?,vbYesNo+vbQuestion)=vbYesThen.Delete.MoveNextIf.EOFThen.MoveLastEndIfEndIfEndWithExitSubdeleteerr:MsgBoxErr.DescriptionEndSubPrivateSubCommand3_Click()Adodc1.Recordset.MoveNextIfAdodc

20、1.Recordset.EOFThenMsgBox這是最后一條記錄,vbOKCancel+vbQuestionAdodc1.Recordset.MoveLastEndIfEndSubPrivateSubCommand4_Click()Adodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenMsgBox這是第一條記錄,vbOKCancel+vbQuestionAdodc1.Recordset.MoveFirstEndIfEndSubPrivateSubCommand5_Click()IfAdodc1.Recordset.EOFThenMsgB

21、ox記錄空,vbOKCancel+vbQuestionEndElseAdodc1.Recordset.MoveFirstExitSubEndSubPrivateSubCommand6_Click()IfAdodc1.Recordset.RecordCount=0ThenMsgBox空記錄,vbOKCancel+vbQuestionEndElseAdodc1.Recordset.MoveLastEndIfEndSubPrivateSubCommand7_Click()MDIForm1.Showfrmdengji.HideEndSub圖書借閱和圖書賠償子窗體運行后如圖34和圖35所示,因為它們的代

22、碼和圖書登記子窗體的代碼雷同,在此不做重復(fù)。圖34圖書借閱子窗體運行效果圖35圖書賠償子窗體運行效果(2)增加用戶子窗體代碼增加用戶子窗體是用來增加用戶的用戶名、密碼和權(quán)限的。其運行效果如圖36所示單擊確定”按鈕后,還要返回一個信息框,提示成功信息,如圖37所示A 上厘戶胤物|:喉I圖36增加用戶子窗體運行效果圖37成功信息框窗體部分代碼的思路是,收集輸入的表中的字符串,然后與數(shù)據(jù)庫中的系統(tǒng)的用戶數(shù)據(jù)比較,如果不存在,則允許添加。PrivateSubCommand1_Click()DimsqlAsStringDimrs_addAsNewADODB.RecordsetIfTrim(Text1.T

23、ext)=ThenMsgBox用戶名不能為空,vbOKOnly+vbExclamation,ExitSubText1.SetFocusElsesql=select*from系統(tǒng)管理rs_add.Opensql,conn,adOpenKeyset,adLockPessimisticWhile(rs_add.EOF=False)IfTrim(rs_add.Fields(0)=Trim(Text1.Text)ThenMsgBox已有這個用戶,vbOKOnly+vbExclamation,Text1.SetFocusText1.Text=Text2.Text=Text3.Text=Combo1.Tex

24、t=ExitSubElsers_add.MoveNextEndIfWendIfTrim(Text2.Text)Trim(Text3.Text)ThenMsgBox兩次密碼不一致,vbOKOnly+vbExclamation,Text2.SetFocusText2.Text=Text3.Text=ExitSubElseIfTrim(Combo1.Text)systemAndTrim(Combo1.Text)guestThenMsgBox請選擇正確的用戶權(quán)限,vbOKOnly+vbExclamation,Combo1.SetFocusCombo1.Text=ExitSubElsers_add.Ad

25、dNewrs_add.Fields(0)=Text1.Textrs_add.Fields(1)=Text2.Textrs_add.Fields(2)=Combo1.Textrs_add.Updaters_add.Close下面是返回成功信息對話框的代碼MsgBox添力口用戶成功,vbOKOnly+vbExclamation,UnloadMeEndIfEndIfEndSub38所示。(3)修改密碼子窗體代碼修改密碼子窗體是用來修改用戶密碼的。其運行效果如圖圖38修改密碼子窗體運行效果在確定”按鈕的Click事件中添加如下代碼:PrivateSubCommand1_Click()Dimrs_cha

26、ngAsNewADODB.RecordsetDimsqlAsStringIfTrim(Text1.Text)Trim(Text2.Text)ThenMsgBox密碼不一致!,vbOKOnly+vbExclamation,Textl.SetFocusTextl.Text=Text2.Text=Elsesql=select*from系統(tǒng)管理where用戶名=&userID&rs_chang.Opensql,conn,adOpenKeyset,adLockPessimisticrs_chang.Fields(1)=Textl.Textrs_chang.Updaters_chang.CloseMsgB

27、ox密碼修改成功,vbOKOnly+vbExclamation,UnloadMeEndIfEndSub圖,羽提示修改成功在上述代碼中,首先比較兩個表中的數(shù)據(jù)是否一致,然后用rs_chang.Fields(1)=Text1.Text語句把代碼輸入到數(shù)據(jù)庫中。最后,用MsgBox密碼修改成功,vbOKOnly+vbExclamation,語句彈出一個信息框,告訴修改成功,如圖39所示。顯示目錄(4)庫房管理子窗體代碼庫房管理子窗體是用來管理圖書資料的。其運行效果如圖40所示。圖40庫房管理子窗體實際上,設(shè)計庫房管理子窗體的程序代碼與增加用戶子窗體的代碼在思路上是完全相同的。就是在DataGrid的

28、文本框中顯示圖書進出的清單,最后把填寫的明細(xì)存儲到數(shù)據(jù)庫中。檢查代碼如下:OptionExplicitDimrs_data2AsNewADODB.RecordsetDimselect_rowAsStringDimshowgrid2AsBooleanDimrs_customAsNewADODB.RecordsetDimjinchuAsString進出庫標(biāo)志DimmodifyAsBoolean修改狀態(tài)標(biāo)志PrivateSubcmdexit_Click()UnloadMeEndSubPrivateSubForm_Load()OnErrorGoToloaderrorDimsqlAsStringsql=

29、select*from圖書資料rs_custom.CursorLocation=adUseClientrs_custom.Opensql,conn,adOpenKeyset,adLockPessimisticWhileNotrs_custom.EOFCombo1.AddItemrs_custom.Fields(0)rs_custom.MoveNextWendfindok=Truemodify=False非修改狀態(tài)showgrid2=Falsedisplaygrid1調(diào)用顯示Datagrid1子程序loaderror:IfErr.Number0ThenMsgBoxErr.DescriptionE

30、ndIfEndSub顯示msflexgrid1子程序PublicSubdisplaygrid1()DimiAsIntegerOnErrorGoTodisplayerrorsetgridsetgridheadMSFlexGrid1.Row=0IfNotrs_data1.EOFThenrs_data1.MoveFirstDoWhileNotrs_data1.EOFMSFlexGrid1.Row=MSFlexGrid1.Row+1MSFlexGrid1.Col=0IfNotIsNull(rs_data1.Fields(0)ThenMSFlexGrid1.Text=rs_data1.Fields(0)

31、ElseMSFlexGrid1.Text=MSFlexGrid1.Col=1IfNotIsNull(rs_data1.Fields(1)ThenMSFlexGrid1.Text=rs_data1.Fields(1)ElseMSFlexGrid1.Text=MSFlexGrid1.Col=2IfNotIsNull(rs_data1.Fields(2)ThenMSFlexGrid1.Text=rs_data1.Fields(2)ElseMSFlexGrid1.Text=MSFlexGrid1.Col=3IfNotIsNull(rs_data1.Fields(3)ThenMSFlexGrid1.Te

32、xt=rs_data1.Fields(3)ElseMSFlexGrid1.Text=MSFlexGrid1.Col=4IfNotIsNull(rs_data1.Fields(4)ThenMSFlexGrid1.Text=rs_data1.Fields(4)ElseMSFlexGrid1.Text=MSFlexGrid1.Col=5IfNotIsNull(rs_data1.Fields(5)ThenMSFlexGrid1.Text=rs_data1.Fields(5)ElseMSFlexGrid1.Text=rs_data1.MoveNextLoopEndIfdisplayerror:MsgBo

33、xErr.DescriptionEndIfEndSubPublicSubsetgrid()DimiAsIntegerOnErrorGoToseterrorWithMSFlexGrid1.ScrollBars=flexScrollBarBoth.FixedCols=0.Rows=rs_data1.RecordCount+1.Cols=6.SelectionMode=flexSelectionByRowFori=0To.Rows-1.RowHeight(i)=315NextFori=0To.Cols-1.ColWidth(i)=1300NextiEndWithExitSubseterror:Msg

34、BoxErr.DescriptionEndSubPublicSubsetgridhead()OnErrorGoTosetheaderrorMSFlexGrid1.Row=0MSFlexGrid1.Col=0MSFlexGrid1.Text=編號MSFlexGrid1.Col=1MSFlexGrid1.Text=購買日期MSFlexGrid1.Col=2MSFlexGrid1.Text=書名MSFlexGrid1.Col=3MSFlexGrid1.Text=類型MSFlexGrid1.Col=4MSFlexGrid1.Text=定價MSFlexGrid1.Col=5MSFlexGrid1.Tex

35、t=備注ExitSubsetheaderror:MsgBoxErr.DescriptionEndSubPrivateSubForm_Unload(CancelAsInteger)findok=Falsers_data1.Closers_custom.CloseEndSubPrivateSubMSFlexGrid1_Click()OnErrorGoTogriderrorDimgetrowAsLonggetrow=MSFlexGrid1.RowIfMSFlexGrid1.Rows=1ThenMsgBox無相關(guān)記錄,vbOKOnly+vbExclamation,Elseselect_row=MSFl

36、exGrid1.TextMatrix(getrow,0)EndIfgriderror:IfErr.Number0ThenMsgBoxErr.DescriptionEndIfEndSubPublicSubshowdata()WithMSFlexGrid2.Rows=rs_data2.RecordCount+1IfNotrs_data2.EOFThenrs_data2.MoveFirstDoWhileNotrs_data2.EOF.Row=.Row+1.Col=0IfNotIsNull(rs_data2.Fields(0)Then.Text=rs_data2.Fields(0)Else.Text=

37、.Col=1IfNotIsNull(rs_data2.Fields(1)Then.Text=rs_data2.Fields(1)Else.Text=.Col=2IfNotIsNull(rs_data2.Fields(2)Then.Text=rs_data2.Fields(2)Else.Text=.Col=3IfNotIsNull(rs_data2.Fields(3)Then.Text=rs_data2.Fields(3)Else.Text=.Col=4IfNotIsNull(rs_data2.Fields(4)AndCDbl(rs_data2.Fields(4)0Then.Text=-CDbl

38、(rs_data2.Fields(4)Else.Text=rs_data2.Fields(4)EndIf.Col=5IfNotIsNull(rs_data2.Fields(5)Then.Text=rs_data2.Fields(5)Else.Text=.Col=6IfNotIsNull(rs_data2.Fields(6)Then.Text=rs_data2.Fields(6)Else.Text=.Col=7IfNotIsNull(rs_data2.Fields(7)AndCDbl(rs_data2.Fields(4)0Then.Text=-CDbl(rs_data2.Fields(7)Els

39、e.Text=rs_data2.Fields(7)EndIf.Col=8IfNotIsNull(rs_data2.Fields(8)Then.Text=rs_data2.Fields(8)Else.Text=rs_data2.MoveNextLooprs_data2.MoveLastEndIfEndWithEndSub(5)查詢子窗體代碼查詢子窗體是用來查詢庫房中圖書資料明細(xì)的。其運行效果如圖41所示圖41查詢子窗體運行效果在列表框中給出編號或年月日后,查詢”按鈕的Click事件將給出與數(shù)據(jù)庫查找比較的結(jié)果。PrivateSubCommand1_Click()OnErrorGoTocmderr

40、orDimfind_date1AsStringDimfind_date2AsStringIfOption1.Value=TrueThensqlfind=select*from圖書資料where編號between&_Combo1(0).Text&and&Combo1(1).Text&EndIfIfOption2.Value=TrueThenfind_date1=Format(CDate(Comboy(0).Text&-&_Combom(0).Text&-&Combod(0).Text),yyyy-mm-dd)find_date2=Format(CDate(Comboy(1).Text&-&_Co

41、mbom(1).Text&-&Combod(1).Text),yyyy-mm-dd)sqlfind=select*from圖書資料where購買日期between#&_find_date1&#&and&#&find_date2&#EndIfrs_data1.Opensqlfind,conn,adOpenKeyset,adLockPessimisticfrmdatamanage.displaygrid1UnloadMecmderror:IfErr.Number0ThenMsgBoxErr.DescriptionEndSub運行查詢子窗體時,組合框中就已經(jīng)從數(shù)據(jù)庫中提取了貨單號和年月日兩個待查條件

42、。DimiAsIntegerDimsqlAsStringIffindok=TrueThenrs_data1.CloseEndIfsql=select*from圖書資料orderby編號descrs_find.CursorLocation=adUseClientrs_find.Opensql,conn,adOpenKeyset,adLockPessimisticIfrs_find.EOF=FalseThen添加編號Withrs_findDoWhileNot.EOFCombo1(0).AddItem.Fields(0)Combo1(1).AddItem.Fields(0).MoveNextLoop

43、EndWithEndIfFori=2001To2005添加年Comboy(0).AddItemiComboy(1).AddItemiNextiFori=1To12添加月Combom(0).AddItemiCombom(1).AddItemiNextiFori=1To31添力口日Combod(0).AddItemiCombod(1).AddItemiNextiEndSub查詢完畢后,輸出查詢結(jié)果,如圖42所示。圖42查詢結(jié)果2006-3116:26:00顯示目錄(6)用戶登錄子窗體代碼運行的用戶登錄子窗體如圖43所示。南Q石客嗎i圖43運行的用戶登錄子窗體在本項目中,用戶登錄子窗體是運行的第一個

44、界面,它的作用是檢查用戶名和密碼是否正確。由于用戶的資料是存放在數(shù)據(jù)庫中,所以在啟動該子窗體時,就已經(jīng)連接了數(shù)據(jù)庫。其代碼如下:PrivateSubForm_Load()DimconnectionstringAsStringconnectionstring=provider=Microsoft.Jet.oledb.4.0;&_datasource=book.mdbconn.Openconnectionstringcnt=0EndSub確定”按鈕的作用是檢查輸入的數(shù)據(jù)是否與數(shù)據(jù)庫中的數(shù)據(jù)一致。PrivateSubCommand1_Click()DimsqlAsStringDimrs_loginA

45、sNewADODB.RecordsetIfTrim(txtuser.Text)=Then判斷輸入的用戶名是否為空MsgBox沒有這個用戶,vbOKOnly+vbExclamation,txtuser.SetFocusElsesql=select*from系統(tǒng)管理where用戶名=&txtuser.Text&rs_login.Opensql,conn,adOpenKeyset,adLockPessimisticIfrs_login.EOF=TrueThenMsgBox沒有這個用戶,vbOKOnly+vbExclamation,txtuser.SetFocusElse檢驗密碼是否正確用戶名和密碼通

46、過后,要關(guān)閉本窗體并打開主窗體。IfTrim(rs_login.Fields(1)=Trim(txtpwd.Text)ThenuserID=txtuser.Textuserpow=rs_login.Fields(2)rs_login.CloseUnloadMeMDIForm1.ShowElseMsgBox密碼不正確,vbOKOnly+vbExclamation,txtpwd.SetFocusEndIfEndIfEndIf只能輸入3次cnt=cnt+1Ifcnt=3ThenUnloadMeEndIfExitSubEndSub(7)值班管理子窗體代碼值班管理子窗體的作用是把值班人員的時間安排形成列

47、表。運行的值班管理子窗體如圖44所示圖44運行的值班管理子窗體先定義連接數(shù)據(jù)庫的變量:OptionExplicitDimrs_zhibanAsNewADODB.Recordset然后列出窗體部分的代碼。PrivateSubcmdadd_Click()OnErrorGoToadderrorIfcmdadd.Caption=新增記錄Then當(dāng)此按鈕的狀態(tài)為為增加記錄”時cmdadd.Caption=確定按鈕名稱改確定”cmddel.Enabled=FalseDataGrid1.AllowAddNew=TrueDataGrid1.AllowUpdate=True設(shè)定DataGrid可以增加記錄Els

48、eIfNotIsNull(DataGrid1.Bookmark)ThenIfNotIsDate(Trim(DataGrid1.Columns(值班開始日期).CellText(DataGrid1.Bookmark)ThenMsgBox請按照格式y(tǒng)yyy-mm-dd輸入值班開始日期,vbOKOnly+vbExclamation,ExitSubEndIfIfNotIsDate(Trim(DataGrid1.Columns(值班開始時間).CellText(DataGrid1.Bookmark)ThenMsgBox請按照格式hh-mm輸入值班開始時間,vbOKOnly+vbExclamation,E

49、xitSubEndIfIfNotIsDate(Trim(DataGrid1.Columns(值班截止日期).CellText(DataGrid1.Bookmark)ThenMsgBox請按照格式y(tǒng)yyy-mm-dd輸入值班截止日期,vbOKOnly+vbExclamation,ExitSubEndIfIfNotIsDate(Trim(DataGrid1.Columns(值班截止時間).CellText(DataGrid1.Bookmark)ThenMsgBox請按照格式hh-mm輸入值班截止時間,vbOKOnly+vbExclamation,ExitSubEndIfIfTrim(DataGri

50、d1.Columns(值班人).CellText(DataGrid1.Bookmark)=ThenMsgBox值班人不能為空!,vbOKOnly+vbExclamation,ExitSubrs_zhiban.UpdateMsgBox添加信息成功!,vbOKOnly+vbExclamation,DataGrid1.AllowAddNew=FalseDataGrid1.AllowUpdate=FalseElseMsgBox沒有添加信息!,vbOKOnly+vbExclamation,EndIfcmdadd.Caption=新增記錄cmddel.Enabled=TrueEndIfadderror:IfErr.Number0ThenMsgBoxErr.DescriptionEndIfEndSubPrivateSubcmdcancel_Click()UnloadMeMDIForm1.ShowEndSubPrivateSubcmddel_Click()DimanswerAsStringOnErrorGoTodelerroranswer=MsgBox(確定要刪除嗎?,vbYesNo,)Ifanswer=vbYesThenDataGrid1.AllowDelet

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論