VB+Access图书管理系统_第1页
VB+Access图书管理系统_第2页
VB+Access图书管理系统_第3页
VB+Access图书管理系统_第4页
VB+Access图书管理系统_第5页
已阅读5页,还剩43页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB+Access设计图书管理系统、需求分析在进行一个项目的设计之前,先要进行必要的需求分析。现某图书馆需要管理其各种人员和图书信息,希望实现办公的信息化,通过建立一个图书管理系统来管理图书。其完成的功能如下:(i)可以实现图书的登记、借阅和赔偿的管理。(2)可以实现对图书的各种信息的查询,包括逐个浏览,以及对图书信息的增加、删除和编辑操作。另外,可以根据输入的信息来检索某个图书的信息。(3)可以实现对管理人员的投诉管理。(4)可以实现对值班人员的管理。系统的功能模块图如图1所示。本实例根据上面的设计规划出的实体有图书登记实体、图书借阅实体、图书赔偿实体、查询输出实体、值班管理实体、投诉管理实

2、体。各个实体具体的描述E-R图如下。图书登记实体E-R图如图2所示。图书借阅实体E-R图如图3所示。图1系统的功能模块图图3图书借阅实体E-R图图书赔偿实体E-R图如图4所示图4图书赔偿实体E-R图投诉管理实体E-R图如图5所示图5投诉管理实体E-R图值班管理实体E-R图如图6所示。查询输出实体E-R图如图7所示图7查询输出实体E-R图二、结构设计根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的功能,可以设计下面的几个模块。图书管理模块:用来实现图书的登记、借阅、赔偿。 图书资料模块:用来实现图书的查询输出。 值班管理模块:用来实现管理人员的值班

3、浏览。 投诉管理模块:用来实现对管理人员的投诉管理。 系统管理模块:用来实现用户的增加、删除和修改等操作。三、数据库设计这里的数据库采用Access,用ADO作为连接数据对象。 、建立Access数据库启动Access,建立一个空的数据库book.mdb,如图8所示。使用程序设计器建立系统需要的表格如下。 书登记表,如图9所示。图8建立数据库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所示。系统管理表,如图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系统管理表投诉管理表,如图14所示。x.aIWWK1IWfTl站*XEWWtJ修工一餐苗图14投诉管理表值班管理表,如图15所示。图15值班管理表2、连接数据在VisualBasic环境下,选择工程-引用命令,在随后出现的对话框中选择Microso

5、ftActiveXDataObjects2.0Library,然后单击确定”按钮,如图16所示。图16引用ADO连接数据库在程序设计的公共本II块中,先定义ADO连接对象。语句如下:PublicconnAsNewADODB.Connection标记连接对象然后在子程序中,用如下的语句即可打开数据库:DimconnectionstringAsStringconnectionstring=provider=Microsoft.Jet.oledb.4.0;&_datasource=book.mdbconn.Openconnectionstring3、设置ODBCVB的ADO对象是通过ODBC来访问数

6、据库,所以还要建立ODBC数据引擎接口打开控制面板中的管理工具”一数据源(ODBC1出现如图17所示的对话框图17ODBC对话框单击添加”按钮,出现创建新数据源对话框,如图18所示。图18创建新数据源对话框选择MicrosoftAccessDriver(*.mdb),单击完成”按钮,出现如图19所示对话框图19设置连接数据源在数据源名文本框中添加一个名字,单击确定”按钮完成系统默认连接设置。然后在ODBC对话框中单击确定”按钮完成ODBC设置。界面设计设计好的界面如图20所示。图20图书管理系统界面这是一个多文档界面(MDI)应用程序,可以同时显示多个文档,每个文档显示在各自的窗体中。MDI应

7、用程序中常有包含子菜单的窗体”选项,用于在窗体或文档之间进行切换。菜单应用程序中,有5个菜单选项,每个选项对应着E-R图的一个子项目。1、创建主窗体首先创建一个工程,命名为图书管理系统,选择工程”-添加MDI窗体”命令,则在项目中添加了主窗体。该窗体的一些属性如表1所示。表1主窗体的属性属性值Caption图书管理系统NameMainMenuMainmenu1WindowstateMaxsizeWindowstate的值为Maxsize,即程序启动之后自动最大化。将菜单”组件从工具箱”拖到窗体上。创建一个Text属性设置为文件”的顶级菜单项,且带有名为关闭”的子菜单项。类似地创建一些菜单项,如

8、表2所示。表2菜单项表菜单名称Text属性功能描述MenuItem1图书管理顶级菜单,包含子菜单MenuItem2图书登记调出图书登记窗体MenuItem3图书借阅调出图书借阅窗体MenuItem4图书赔偿调出图书赔偿窗体MenuItem5图书资料顶级菜单,包含子菜单MenuItem6查询输出调出查询输出窗体MenuItem7值班管理顶级菜单,没有子菜单MenuItem8投诉管理顶级菜单,没有子菜单MenuItem9系统管理顶级菜单,包含子菜单MenuItem10增加用户调出用户窗体MenuItem11修改密码调出密码窗体MenuItem12退出系统退出主窗体如图21所示。图21主窗体2、创建

9、各子窗体选择工程”-添加窗体”命令,添加子窗体。在新建VisualBasic工程时自带的窗体中,将其属性MIDChild改成True,则这个窗体成为MID窗体的子窗体。在这个项目中,要创建的子窗体如表3所示。表3所有子窗体子窗体名Text图书登记frmdengji图书借阅frmjieyue图书赔偿frmpeichang增加新用户frmadduser查询输出frmfind登录系统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确认密码Label4选择权限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、录建立公共模块可以提高代码的效率,同时使得修改和维护代码都很方便。创建公共模块的步骤如下:(1)在菜单中选择工程”一添加模块”命令,则出现模块对话框,如图32所示。Module1(2)选择模块图标后,单击打开按钮,则模块已经添加到项目中了。默认情况下名为图32模块对话框(3)在模块中定义整个项目的公共变量。Public conn As New ADODB.Connection 标记连接对象Public userID As String 标记当前用户IDPublic userpow As String 标记用户权限Public find As Boolean 标记查询Public sqlfind

15、 As String 查询语句Public rs data1 As New ADODB.RecordsetPublic findok As BooleanPublic frmdata As BooleanPublic Const keyenter = 13 enter 键的 ASCII 码在主窗体添加完菜单之后,就要为各个子菜单创建事件处理程序。窗体代码在本项目中,子菜单事件都是Click事件,这里先给出主窗体部分的代码。下面是响应“增加用户”子菜单Click事件,调出增加用户窗体代码。PrivateSubadduser_Click()frmadduser.ShowEndSub下面是响应“查询

16、输出”子菜单Click事件,调出查询输出窗体代码。PrivateSubchaxunshuchu_Click()frmfind.ShowEndSub下面是响应“退出”子菜单Click事件,调出退出窗体代码。PrivateSubexit_Click()UnloadMeEndSub下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。PrivateSubcheckin_Click()frmdengji.ShowEndSub下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。PrivateSubchangepwd_Click()frmchangepwd.ShowEndSub下

17、面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。PrivateSubborrow_Click()frmjieyue.ShowEndSub下面是响应“图书赔偿”子菜单Click事件,调出图书赔偿窗体代码。PrivateSubtushupeichang_Click()frmpeichang.Show1EndSub下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。PrivateSubzhibanguanli_Click()frmzhiban.Show1EndSub下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。PrivateSubtousuguanli

18、_Click()frmtousu.Show1EndSub2、各子窗体的代码在各个子窗体建立好后,就可以根据各个子窗体的功能给它们添加相应代码了。(1) 图书登记子窗体代码本窗体用来填写图书登记的信息,用ADO来连接数据库,是本窗体的重点。采用MDI的子程序,所以运行后,它出现在主程序的界面下,如图33所示。图33图书登记子窗体按钮控件要求先填写基本信息,然后与数据库信息比较。PrivateSubCommand1_Click()OnErrorGoToadderrTextl.SetFocusAdodcI.Recordset.AddNewExitSubadderr:MsgBoxErr.Descrip

19、tionEndSubPrivateSubCommand2_Click()OnErrorGoTodeleteerrWithAdodc1.RecordsetIfNot.EOFAndNot.BOFThenIfMsgBox(删除当前记录吗?,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、码和图书登记子窗体的代码雷同,在此不做重复。图34图书借阅子窗体运行效果图35图书赔偿子窗体运行效果(2)增加用户子窗体代码增加用户子窗体是用来增加用户的用户名、密码和权限的。其运行效果如图36所示单击确定”按钮后,还要返回一个信息框,提示成功信息,如图37所示A 上厘户胤物|:喉I图36增加用户子窗体运行效果图37成功信息框窗体部分代码的思路是,收集输入的表中的字符串,然后与数据库中的系统的用户数据比较,如果不存在,则允许添加。PrivateSubCommand1_Click()DimsqlAsStringDimrs_addAsNewADODB.RecordsetIfTrim(Text1.T

23、ext)=ThenMsgBox用户名不能为空,vbOKOnly+vbExclamation,ExitSubText1.SetFocusElsesql=select*from系统管理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请选择正确的用户权限,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系统管理where用户名=&userID&rs_chang.Opensql,conn,adOpenKeyset,adLockPessimisticrs_chang.Fields(1)=Textl.Textrs_chang.Updaters_chang.CloseMsgB

27、ox密码修改成功,vbOKOnly+vbExclamation,UnloadMeEndIfEndSub图,羽提示修改成功在上述代码中,首先比较两个表中的数据是否一致,然后用rs_chang.Fields(1)=Text1.Text语句把代码输入到数据库中。最后,用MsgBox密码修改成功,vbOKOnly+vbExclamation,语句弹出一个信息框,告诉修改成功,如图39所示。显示目录(4)库房管理子窗体代码库房管理子窗体是用来管理图书资料的。其运行效果如图40所示。图40库房管理子窗体实际上,设计库房管理子窗体的程序代码与增加用户子窗体的代码在思路上是完全相同的。就是在DataGrid的

28、文本框中显示图书进出的清单,最后把填写的明细存储到数据库中。检查代码如下:OptionExplicitDimrs_data2AsNewADODB.RecordsetDimselect_rowAsStringDimshowgrid2AsBooleanDimrs_customAsNewADODB.RecordsetDimjinchuAsString进出库标志DimmodifyAsBoolean修改状态标志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非修改状态showgrid2=Falsedisplaygrid1调用显示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无相关记录,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)查询子窗体代码查询子窗体是用来查询库房中图书资料明细的。其运行效果如图41所示图41查询子窗体运行效果在列表框中给出编号或年月日后,查询”按钮的Click事件将给出与数据库查找比较的结果。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运行查询子窗体时,组合框中就已经从数据库中提取了货单号和年月日两个待查条件

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查询完毕后,输出查询结果,如图42所示。图42查询结果2006-3116:26:00显示目录(6)用户登录子窗体代码运行的用户登录子窗体如图43所示。南Q石客吗i图43运行的用户登录子窗体在本项目中,用户登录子窗体是运行的第一个

44、界面,它的作用是检查用户名和密码是否正确。由于用户的资料是存放在数据库中,所以在启动该子窗体时,就已经连接了数据库。其代码如下:PrivateSubForm_Load()DimconnectionstringAsStringconnectionstring=provider=Microsoft.Jet.oledb.4.0;&_datasource=book.mdbconn.Openconnectionstringcnt=0EndSub确定”按钮的作用是检查输入的数据是否与数据库中的数据一致。PrivateSubCommand1_Click()DimsqlAsStringDimrs_loginA

45、sNewADODB.RecordsetIfTrim(txtuser.Text)=Then判断输入的用户名是否为空MsgBox没有这个用户,vbOKOnly+vbExclamation,txtuser.SetFocusElsesql=select*from系统管理where用户名=&txtuser.Text&rs_login.Opensql,conn,adOpenKeyset,adLockPessimisticIfrs_login.EOF=TrueThenMsgBox没有这个用户,vbOKOnly+vbExclamation,txtuser.SetFocusElse检验密码是否正确用户名和密码通

46、过后,要关闭本窗体并打开主窗体。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运行的值班管理子窗体先定义连接数据库的变量:OptionExplicitDimrs_zhibanAsNewADODB.Recordset然后列出窗体部分的代码。PrivateSubcmdadd_Click()OnErrorGoToadderrorIfcmdadd.Caption=新增记录Then当此按钮的状态为为增加记录”时cmdadd.Caption=确定按钮名称改确定”cmddel.Enabled=FalseDataGrid1.AllowAddNew=TrueDataGrid1.AllowUpdate=True设定DataGrid可以增加记录Els

48、eIfNotIsNull(DataGrid1.Bookmark)ThenIfNotIsDate(Trim(DataGrid1.Columns(值班开始日期).CellText(DataGrid1.Bookmark)ThenMsgBox请按照格式yyyy-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请按照格式yyyy-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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论