VBAccess设计图书管理系统样本_第1页
VBAccess设计图书管理系统样本_第2页
VBAccess设计图书管理系统样本_第3页
VBAccess设计图书管理系统样本_第4页
VBAccess设计图书管理系统样本_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

VB+Access设计图书管理系统

一、需求分析

在进行一种项目设计之前,先要进行必要需求分析。

现某图书馆需要管理其各种人员和图书信息,但愿实现办公信息化,通过建立一种图书管理系统来管理图书。其完毕功能如下:

(1)可以实现图书登记、借阅和补偿管理。

(2)可以实现对图书各种信息查询,涉及逐个浏览,以及对图书信息增长、删除和编辑操作。此外,可以依照输入信息来检索某个图书信息。

(3)可以实现对管理人员投诉管理。

(4)可以实现对值班人员管理。

系统功能模块图如图1所示。

本实例依照上面设计规划出实体有图书登记实体、图书借阅实体、图书补偿实体、查询输出实体、值班管理实体、投诉管理实体。各个实体详细描述E-R图如下。

图书登记实体E-R图如图2所示。

图书借阅实体E-R图如图3所示。

图1系统功能模块图

图2图书登记实体E-R图

图3图书借阅实体E-R图

图书补偿实体E-R图如图4所示。

图4图书补偿实体E-R图

投诉管理实体E-R图如图5所示。

图5投诉管理实体E-R图

值班管理实体E-R图如图6所示。

图6值班管理实体E-R图

查询输出实体E-R图如图7所示。

二、构造设计

依照上面需求分析,设计好数据库系统,然后开发应用程序可以考虑窗体系统,每一种窗体实现不同功能,可以设计下面几种模块。

●图书管理模块:用来实现图书登记、借阅、补偿。

●图书资料模块:用来实现图书查询输出。

●值班管理模块:用来实现管理人员值班浏览。

●投诉管理模块:用来实现对管理人员投诉管理。

●系统管理模块:用来实现顾客增长、删除和修改等操作。

三、数据库设计

这里数据库采用Access,用ADO作为连接数据对象。

1、建立Access数据库

启动Access,建立一种空数据库book.mdb,如图8所示。

使用程序设计器建立系统需要表格如下。

图书登记表,如图9所示。

图8建立数据库book.mdb图9图书登记表

图书借阅表,如图10所示。图书补偿表,如图11所示。

图10图书借阅表图11图书补偿表

图书资料表,如图12所示。系统管理表,如图13所示。

图12图书资料表图13系统管理表

投诉管理表,如图14所示。

图14投诉管理表

值班管理表,如图15所示。

图15值班管理表

2、连接数据

在VisualBasic环境下,选取“工程”→“引用”命令,在随后浮现对话框中选取“MicrosoftActiveXDataObjects2.0Library”,然后单击“拟定”按钮,如图16所示。

图16引用ADO连接数据库

在程序设计公共模块中,先定义ADO连接对象。语句如下:

PublicconnAsNewADODB.Connection'标记连接对象

然后在子程序中,用如下语句即可打开数据库:

DimconnectionstringAsString

connectionstring="provider=Microsoft.Jet.oledb.4.0;"&_

"datasource=book.mdb"

conn.Openconnectionstring

3、设立ODBC

VBADO对象是通过ODBC来访问数据库,因此还要建立ODBC数据引擎接口。

打开控制面板中“管理工具”→“数据源”(ODBC),浮现如图17所示对话框。

图17ODBC对话框

单击“添加”按钮,浮现“创立新数据源”对话框,如图18所示。

图18“创立新数据源”对话框

选取MicrosoftAccessDriver(*.mdb),单击“完毕”按钮,浮现如图19所示对话框。

图19设立连接数据源界面设计

设计好界面如图20所示。

图20图书管理系统界面

这是一种多文档界面(MDI)应用程序,可以同步显示各种文档,每个文档显示在各自窗体中。MDI应用程序中常有包括子菜单“窗体”选项,用于在窗体或文档之间进行切换。

菜单应用程序中,有5个菜单选项,每个选项相应着E-R图一种子项目。

1、创立主窗体

一方面创立一种工程,命名为图书管理系统,选取“工程”→“添加MDI窗体”命令,则在项目中添加了主窗体。该窗体某些属性如表1所示。

表1主窗体属性属性值Caption图书管理系统NameMainMenuMainmenu1WindowstateMaxsize

Windowstate值为Maxsize,即程序启动之后自动最大化。

将“菜单”组件从“工具箱”拖到窗体上。创立一种Text属性设立为“文献”顶级菜单项,且带有名为“关闭”子菜单项。类似地创立某些菜单项,如表2所示。

表2菜单项表菜单名称Text属性功能描述MenuItem1图书管理顶级菜单,包括子菜单MenuItem2图书登记调出图书登记窗体MenuItem3图书借阅调出图书借阅窗体MenuItem4图书补偿调出图书补偿窗体MenuItem5图书资料顶级菜单,包括子菜单MenuItem6查询输出调出查询输出窗体MenuItem7值班管理顶级菜单,没有子菜单MenuItem8投诉管理顶级菜单,没有子菜单MenuItem9系统管理顶级菜单,包括子菜单MenuItem10增长顾客调出顾客窗体MenuItem11修改密码调出密码窗体MenuItem12退出系统退出

主窗体如图21所示。

图21主窗体

2、创立各子窗体

选取“工程”→“添加窗体”命令,添加子窗体。

在新建VisualBasic工程时自带窗体中,将其属性MIDChild改成True,则这个窗体成为MID窗体子窗体。

在这个项目中,要创立子窗体如表3所示。

表3所有子窗体子窗体名Text图书登记frmdengji图书借阅frmjieyue图书补偿frmpeichang增长新顾客frmadduser查询输出frmfind登录系统frmlogin修改密码frmchangepwd

下面分别给出这些子窗体,以及它们所使用控件。

(1)图书登记子窗体如图22所示,其控件如表4所示。

图22图书登记子窗体

表4图书登记子窗体控件控件类别控件Name控件TextLabelLabel1编号Label2书名Label3类型Label4购买日期Label5定价TextBoxText1(空)Text2(空)Text3(空)Text4(空)Text5(空)CommandButtonCommand1增长记录Command2删除记录Command3下一条Command4上一条Command5第一条Command6最后一条Command7退出ADODataAdodc1(空)DataGridDataGrid1(空)

图书借阅和图书补偿子窗体分别如图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库房管理子窗体

其控件如表6所示。

表6库房管理子窗体控件控件类别控件Name控件TextTextBoxText1(空)ComboBoxCombo1

MSFlexGridMSFlexGrid1

(5)查询子窗体如图28所示,其控件如表7所示。

图28查询子窗体

表7查询子窗体控件控件类别控件Name控件TextOptionButtonOption1按编号查询

Option2按购买日期查询LabelLabel1从Label2到Label3从Label4年Label5月Label6日Label7到Label8年Label9月Label10日Combo(0)ComboBoxCombo1(空)Combo(1)ComboBoxCombo1(空)Comboy(0)ComboBoxComboy(空)Comboy(1)ComboBoxComboy(空)Combom(0)ComboBoxCombom(空)Combom(1)ComboBoxCombom(空)Combod(0)ComboBoxCombod(空)Combod(1)ComboBoxCombod(空)CommandButtonCommand1查询Command2取消

(6)顾客登录子窗体如图29所示。

(7)值班管理子窗体如图30所示,其控件如表8所示。

图29顾客登录子窗体图30值班管理子窗体

(8)投诉管理子窗体如图31所示,其控件如表9所示。

图31投诉管理子窗体

建立公共模块

1、显示目录

建立公共模块可以提高代码效率,同步使得修改和维护代码都很以便。

创立公共模块环节如下:

(1)在菜单中选取“工程”→“添加模块”命令,则浮现模块对话框,如图32所示。

(2)选取模块图标后,单击“打开”按钮,则模块已经添加到项目中了。默认状况下名为Module1。

图32模块对话框

(3)在模块中定义整个项目公共变量。

PublicconnAsNewADODB.Connection'标记连接对象

PublicuserIDAsString'标记当前顾客ID

PublicuserpowAsString'标记顾客权限

PublicfindAsBoolean'标记查询

PublicsqlfindAsString'查询语句

Publicrs_data1AsNewADODB.Recordset

PublicfindokAsBoolean

PublicfrmdataAsBoolean

PublicConstkeyenter=13'enter键ASCII码

在主窗体添加完菜单之后,就要为各个子菜单创立事件解决程序。主窗体代码

在本项目中,子菜单事件都是Click事件,这里先给出主窗体某些代码。

下面是响应“增长顾客”子菜单Click事件,调出增长顾客窗体代码。

PrivateSubadduser_Click()

frmadduser.Show

EndSub

下面是响应“查询输出”子菜单Click事件,调出查询输出窗体代码。

PrivateSubchaxunshuchu_Click()

frmfind.Show

EndSub

下面是响应“退出”子菜单Click事件,调出退出窗体代码。

PrivateSubexit_Click()

UnloadMe

EndSub

下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。

PrivateSubcheckin_Click()

frmdengji.Show

EndSub

下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。

PrivateSubchangepwd_Click()

frmchangepwd.Show

EndSub

下面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。

PrivateSubborrow_Click()

frmjieyue.Show

EndSub

下面是响应“图书补偿”子菜单Click事件,调出图书补偿窗体代码。

PrivateSubtushupeichang_Click()

frmpeichang.Show1

EndSub

下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。

PrivateSubzhibanguanli_Click()

frmzhiban.Show1

EndSub

下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。

PrivateSubtousuguanli_Click()

frmtousu.Show1

EndSub

2、各子窗体代码

在各个子窗体建立好后,就可以依照各个子窗体功能给它们添加相应代码了。

(1)图书登记子窗体代码

本窗体用来填写图书登记信息,用ADO来连接数据库,是本窗体重点。采用MDI子程序,因此运营后,它出当前主程序界面下,如图33所示。

图33图书登记子窗体

按钮控件规定先填写基本信息,然后与数据库信息比较。

PrivateSubCommand1_Click()

OnErrorGoToadderr

Text1.SetFocus

Adodc1.Recordset.AddNew

ExitSub

adderr:

MsgBoxErr.Description

EndSub

PrivateSubCommand2_Click()

OnErrorGoTodeleteerr

WithAdodc1.Recordset

IfNot.EOFAndNot.BOFThen

IfMsgBox("删除当前记录吗?",vbYesNo+vbQuestion)=vbYesThen

.Delete

.MoveNext

If.EOFThen.MoveLast

EndIf

EndIf

EndWith

ExitSub

deleteerr:

MsgBoxErr.Description

EndSub

PrivateSubCommand3_Click()

Adodc1.Recordset.MoveNext

IfAdodc1.Recordset.EOFThen

MsgBox"这是最后一条记录",vbOKCancel+vbQuestion

Adodc1.Recordset.MoveLast

EndIf

EndSub

PrivateSubCommand4_Click()

Adodc1.Recordset.MovePrevious

IfAdodc1.Recordset.BOFThen

MsgBox"这是第一条记录",vbOKCancel+vbQuestion

Adodc1.Recordset.MoveFirst

EndIf

EndSub

PrivateSubCommand5_Click()

IfAdodc1.Recordset.EOFThen

MsgBox"记录空",vbOKCancel+vbQuestion

End

Else

Adodc1.Recordset.MoveFirst

ExitSub

EndSub

PrivateSubCommand6_Click()

IfAdodc1.Recordset.RecordCount=0Then

MsgBox"空记录",vbOKCancel+vbQuestion

End

Else

Adodc1.Recordset.MoveLast

EndIf

EndSub

PrivateSubCommand7_Click()

MDIForm1.Show

frmdengji.Hide

EndSub

图书借阅和图书补偿子窗体运营后如图34和图35所示,由于它们代码和图书登记子窗体代码雷同,在此不做重复。

图34图书借阅子窗体运营效果

图35图书补偿子窗体运营效果

(2)增长顾客子窗体代码

增长顾客子窗体是用来增长顾客顾客名、密码和权限。其运营效果如图36所示。

单击“拟定”按钮后,还要返回一种信息框,提示成功信息,如图37所示。

图36增长顾客子窗体运营效果图37成功信息框

窗体某些代码思路是,收集输入表中字符串,然后与数据库中系统顾客数据比较,如果不存在,则容许添加。

PrivateSubCommand1_Click()

DimsqlAsString

Dimrs_addAsNewADODB.Recordset

IfTrim(Text1.Text)=""Then

MsgBox"顾客名不能为空",vbOKOnly+vbExclamation,""

ExitSub

Text1.SetFocus

Else

sql="select*from系统管理"

rs_add.Opensql,conn,adOpenKeyset,adLockPessimistic

While(rs_add.EOF=False)

IfTrim(rs_add.Fields(0))=Trim(Text1.Text)Then

MsgBox"已有这个顾客",vbOKOnly+vbExclamation,""

Text1.SetFocus

Text1.Text=""

Text2.Text=""

Text3.Text=""

Combo1.Text=""

ExitSub

Else

rs_add.MoveNext

EndIf

Wend

IfTrim(Text2.Text)<>Trim(Text3.Text)Then

MsgBox"两次密码不一致",vbOKOnly+vbExclamation,""

Text2.SetFocus

Text2.Text=""

Text3.Text=""

ExitSub

ElseIfTrim(Combo1.Text)<>"system"AndTrim(Combo1.Text)<>"guest"Then

MsgBox"请选取对的顾客权限",vbOKOnly+vbExclamation,""

Combo1.SetFocus

Combo1.Text=""

ExitSub

Else

rs_add.AddNew

rs_add.Fields(0)=Text1.Text

rs_add.Fields(1)=Text2.Text

rs_add.Fields(2)=Combo1.Text

rs_add.Update

rs_add.Close

下面是返回成功信息对话框代码:

MsgBox"添加顾客成功",vbOKOnly+vbExclamation,""

UnloadMe

EndIf

EndIf

EndSub

(3)修改密码子窗体代码

修改密码子窗体是用来修改顾客密码。其运营效果如图38所示。

图38修改密码子窗体运营效果

在“拟定”按钮Click事件中添加如下代码:

PrivateSubCommand1_Click()

Dimrs_changAsNewADODB.Recordset

DimsqlAsString

IfTrim(Text1.Text)<>Trim(Text2.Text)Then

MsgBox"密码不一致!",vbOKOnly+vbExclamation,""

Text1.SetFocus

Text1.Text=""

Text2.Text=""

Else

sql="select*from系统管理where顾客名='"&userID&"'"

rs_chang.Opensql,conn,adOpenKeyset,adLockPessimistic

rs_chang.Fields(1)=Text1.Text

rs_chang.Update

rs_chang.Close

MsgBox"密码修改成功",vbOKOnly+vbExclamation,""

UnloadMe

EndIf

EndSub

在上述代码中,一方面比较两个表中数据与否一致,然后用rs_chang.Fields(1)=Text1.Text语句把代码输入到数据库中。最后,用MsgBox"密码修改成功",vbOKOnly+vbExclamation,""语句弹出一种信息框,告诉修改成功,如图39所示。

显示目录

(4)库房管理子窗体代码

库房管理子窗体是用来管理图书资料。其运营效果如图40所示。

图40库房管理子窗体

事实上,设计库房管理子窗体程序代码与增长顾客子窗体代码在思路上是完全相似。就是在DataGrid文本框中显示图书进出清单,最后把填写明细存储到数据库中。

检查代码如下:

OptionExplicit

Dimrs_data2AsNewADODB.Recordset

Dimselect_rowAsString

Dimshowgrid2AsBoolean

Dimrs_customAsNewADODB.Recordset

DimjinchuAsString'进出库标志

DimmodifyAsBoolean'修改状态标志

PrivateSubcmdexit_Click()

UnloadMe

EndSub

PrivateSubForm_Load()

OnErrorGoToloaderror

DimsqlAsString

sql="select*from图书资料"

rs_custom.CursorLocation=adUseClient

rs_custom.Opensql,conn,adOpenKeyset,adLockPessimistic

WhileNotrs_custom.EOF

Combo1.AddItemrs_custom.Fields(0)

rs_custom.MoveNext

Wend

findok=True

modify=False'非修改状态

showgrid2=False

displaygrid1'调用显示Datagrid1子程序

loaderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

'显示msflexgrid1子程序

PublicSubdisplaygrid1()

DimiAsInteger

OnErrorGoTodisplayerror

setgrid

setgridhead

MSFlexGrid1.Row=0

IfNotrs_data1.EOFThen

rs_data1.MoveFirst

DoWhileNotrs_data1.EOF

MSFlexGrid1.Row=MSFlexGrid1.Row+1

MSFlexGrid1.Col=0

IfNotIsNull(rs_data1.Fields(0))ThenMSFlexGrid1.Text=rs_data1.Fields(0)Else

MSFlexGrid1.Text=""

MSFlexGrid1.Col=1

IfNotIsNull(rs_data1.Fields(1))ThenMSFlexGrid1.Text=rs_data1.Fields(1)Else

MSFlexGrid1.Text=""

MSFlexGrid1.Col=2

IfNotIsNull(rs_data1.Fields(2))ThenMSFlexGrid1.Text=rs_data1.Fields(2)Else

MSFlexGrid1.Text=""

MSFlexGrid1.Col=3

IfNotIsNull(rs_data1.Fields(3))ThenMSFlexGrid1.Text=rs_data1.Fields(3)Else

MSFlexGrid1.Text=""

MSFlexGrid1.Col=4

IfNotIsNull(rs_data1.Fields(4))ThenMSFlexGrid1.Text=rs_data1.Fields(4)Else

MSFlexGrid1.Text=""

MSFlexGrid1.Col=5

IfNotIsNull(rs_data1.Fields(5))ThenMSFlexGrid1.Text=rs_data1.Fields(5)Else

MSFlexGrid1.Text=""

rs_data1.MoveNext

Loop

EndIf

displayerror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

PublicSubsetgrid()

DimiAsInteger

OnErrorGoToseterror

WithMSFlexGrid1

.ScrollBars=flexScrollBarBoth

.FixedCols=0

.Rows=rs_data1.RecordCount+1

.Cols=6

.SelectionMode=flexSelectionByRow

Fori=0To.Rows-1

.RowHeight(i)=315

Next

Fori=0To.Cols-1

.ColWidth(i)=1300

Nexti

EndWith

ExitSub

seterror:

MsgBoxErr.Description

EndSub

PublicSubsetgridhead()

OnErrorGoTosetheaderror

MSFlexGrid1.Row=0

MSFlexGrid1.Col=0

MSFlexGrid1.Text="编号"

MSFlexGrid1.Col=1

MSFlexGrid1.Text="购买日期"

MSFlexGrid1.Col=2

MSFlexGrid1.Text="书名"

MSFlexGrid1.Col=3

MSFlexGrid1.Text="类型"

MSFlexGrid1.Col=4

MSFlexGrid1.Text="定价"

MSFlexGrid1.Col=5

MSFlexGrid1.Text="备注"

ExitSub

setheaderror:

MsgBoxErr.Description

EndSub

PrivateSubForm_Unload(CancelAsInteger)

findok=False

rs_data1.Close

rs_custom.Close

EndSub

PrivateSubMSFlexGrid1_Click()

OnErrorGoTogriderror

DimgetrowAsLong

getrow=MSFlexGrid1.Row

IfMSFlexGrid1.Rows=1Then

MsgBox"无有关记录",vbOKOnly+vbExclamation,""

Else

select_row=MSFlexGrid1.TextMatrix(getrow,0)

EndIf

griderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

PublicSubshowdata()

WithMSFlexGrid2

.Rows=rs_data2.RecordCount+1

.Row=0

IfNotrs_data2.EOFThen

rs_data2.MoveFirst

DoWhileNotrs_data2.EOF

.Row=.Row+1

.Col=0

IfNotIsNull(rs_data2.Fields(0))Then.Text=rs_data2.Fields(0)Else.Text=""

.Col=1

IfNotIsNull(rs_data2.Fields(1))Then.Text=rs_data2.Fields(1)Else.Text=""

.Col=2

IfNotIsNull(rs_data2.Fields(2))Then.Text=rs_data2.Fields(2)Else.Text=""

.Col=3

IfNotIsNull(rs_data2.Fields(3))Then.Text=rs_data2.Fields(3)Else.Text=""

.Col=4

IfNotIsNull(rs_data2.Fields(4))AndCDbl(rs_data2.Fields(4))<0Then

.Text=-CDbl(rs_data2.Fields(4))

Else

.Text=rs_data2.Fields(4)

EndIf

.Col=5

IfNotIsNull(rs_data2.Fields(5))Then.Text=rs_data2.Fields(5)Else.Text=""

.Col=6

IfNotIsNull(rs_data2.Fields(6))Then.Text=rs_data2.Fields(6)Else.Text=""

.Col=7

IfNotIsNull(rs_data2.Fields(7))AndCDbl(rs_data2.Fields(4))<0Then

.Text=-CDbl(rs_data2.Fields(7))

Else

.Text=rs_data2.Fields(7)

EndIf

.Col=8

IfNotIsNull(rs_data2.Fields(8))Then.Text=rs_data2.Fields(8)Else.Text=""

rs_data2.MoveNext

Loop

rs_data2.MoveLast

EndIf

EndWith

EndSub

(5)查询子窗体代码

查询子窗体是用来查询库房中图书资料明细。其运营效果如图41所示。

图41查询子窗体运营效果

在列表框中给出编号或年月日后,“查询”按钮Click事件将给出与数据库查找比较成果。

PrivateSubCommand1_Click()

OnErrorGoTocmderror

Dimfind_date1AsString

Dimfind_date2AsString

IfOption1.Value=TrueThen

sqlfind="select*from图书资料where编号between'"&_

Combo1(0).Text&"'"&"and"&"'"&Combo1(1).Text&"'"

EndIf

IfOption2.Value=TrueThen

find_date1=Format(CDate(Comboy(0).Text&"-"&_

Combom(0).Text&"-"&Combod(0).Text),"yyyy-mm-dd")

find_date2=Format(CDate(Comboy(1).Text&"-"&_

Combom(1).Text&"-"&Combod(1).Text),"yyyy-mm-dd")

sqlfind="select*from图书资料where购买日期between#"&_

find_date1&"#"&"and"&"#"&find_date2&"#"

EndIf

rs_data1.Opensqlfind,conn,adOpenKeyset,adLockPessimistic

frmdatamanage.displaygrid1

UnloadMe

cmderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

运营查询子窗体时,组合框中就已经从数据库中提取了货单号和年月日两个待查条件。

DimiAsInteger

DimsqlAsString

Iffindok=TrueThen

rs_data1.Close

EndIf

sql="select*from图书资料orderby编号desc"

rs_find.CursorLocation=adUseClient

rs_find.Opensql,conn,adOpenKeyset,adLockPessimistic

Ifrs_find.EOF=FalseThen'添加编号

Withrs_find

DoWhileNot.EOF

Combo1(0).AddItem.Fields(0)

Combo1(1).AddItem.Fields(0)

.MoveNext

Loop

EndWith

EndIf

Fori=To'添加年

Comboy(0).AddItemi

Comboy(1).AddItemi

Nexti

Fori=1To12'添加月

Combom(0).AddItemi

Combom(1).AddItemi

Nexti

Fori=1To31'添加日

Combod(0).AddItemi

Combod(1).AddItemi

Nexti

EndSub

查询完毕后,输出查询成果,如图42所示。

图42查询成果

-3116:26:00

显示目录

(6)顾客登录子窗体代码

运营顾客登录子窗体如图43所示。

图43运营顾客登录子窗体

在本项目中,顾客登录子窗体是运营第一种界面,它作用是检查顾客名和密码与否对的。由于顾客资料是存储在数据库中,因此在启动该子窗体时,就已经连接了数据库。其代码如下:

PrivateSubForm_Load()

DimconnectionstringAsString

connectionstring="provider=Microsoft.Jet.oledb.4.0;"&_

"datasource=book.mdb"

conn.Openconnectionstring

cnt=0

EndSub

“拟定”按钮作用是检查输入数据与否与数据库中数据一致。

PrivateSubCommand1_Click()

DimsqlAsString

Dimrs_loginAsNewADODB.Recordset

IfTrim(txtuser.Text)=""Then'判断输入顾客名与否为空

MsgBox"没有这个顾客",vbOKOnly+vbExclamation,""

txtuser.SetFocus

Else

sql="select*from系统管理where顾客名='"&txtuser.Text&"'"

rs_login.Opensql,conn,adOpenKeyset,adLockPessimistic

Ifrs_login.EOF=TrueThen

MsgBox"没有这个顾客",vbOKOnly+vbExclamation,""

txtuser.SetFocus

Else'检查密码与否对的

顾客名和密码通过后,要关闭本窗体并打开主窗体。

IfTrim(rs_login.Fields(1))=Trim(txtpwd.Text)Then

userID=txtuser.Text

userpow=rs_login.Fields(2)

rs_login.Close

UnloadMe

MDIForm1.Show

Else

MsgBox"密码不对的",vbOKOnly+vbExclamation,""

txtpwd.SetFocus

EndIf

EndIf

EndIf

'只能输入3次

cnt=cnt+1

Ifcnt=3Then

UnloadMe

EndIf

ExitSub(7)值班管理子窗体代码

值班管理子窗体作用是把值班人员时间安排形成列表。运营值班管理子窗体如图44所示。

图44运营值班管理子窗体

先定义连接数据库变量:

OptionExplicit

Dimrs_zhibanAsNewADODB.Recordset

然后列出窗体某些代码。

PrivateSubcmdadd_Click()

OnErrorGoToadderror

Ifcmdadd.Caption="新增记录"Then'当此按钮状态为为“增长记录”时

cmdadd.Caption="拟定"'按钮名称改“拟定”

cmddel.Enabled=False

DataGrid1.AllowAddNew=True

DataGrid1.AllowUpdate=True'设定DataGrid可以增长记录

Else

IfNotIsNull(DataGrid1.Bookmark)Then

IfNotIsDate(Trim(DataGrid1.Columns("值班开始日期").CellText(DataGrid1.Bookmark)))Then

MsgBox"请按照格式yyyy-mm-dd输入值班开始日期",vbOKOnly+vbExclamation,""

ExitSub

EndIf

IfNotIsDate(Trim(DataGrid1.Columns("值班开始时间").CellText(DataGrid1.Bookmark)))Then

MsgBox"请按照格式hh-mm输入值班开始时间",vbOKOnly+vbExclamation,""

ExitSub

EndIf

IfNotIsDate(Trim(DataGrid1.Columns("值班截止日期").CellText(DataGrid1.Bookmark)))Then

MsgBox"请按照格式yyyy-mm-dd输入值班截止日期",vbOKOnly+vbExclamation,""

ExitSub

EndIf

IfNotIsDate(Trim(DataGrid1.Columns("值班截止时间").CellText(DataGrid1.Bookmark)))Then

MsgBox"请按照格式hh-mm输入值班截止时间",vbOKOnly+vbExclamation,""

ExitSub

EndIf

IfTrim(DataGrid1.Columns("值班人").CellText(DataGrid1.Bookmark))=""Then

MsgBox"值班人不能为空!",vbOKOnly+vbExclamation,""

ExitSub

EndIf

rs_zhiban.Update

MsgBox"添加信息成功!",vbOKOnly+vbExclamation,""

DataGrid1.AllowAddNew=False

DataGrid1.AllowUpdate=False

Else

MsgBox"没有添加信息!",vbOKOnly+vbExclamation,""

EndIf

cmdadd.Caption="新增记录"

cmddel.Enabled=True

EndIf

adderror:

IfErr.Number<>0Then

MsgBoxErr.Description

EndIf

EndSub

PrivateSubcmdcancel_Click()

UnloadMe

MDIForm1.Show

EndSub

PrivateSubcmddel_Click()

DimanswerAsString

OnErrorGoTodelerror

answer=MsgBox("拟定要删除吗?",vbYesNo,"")

Ifanswer=vbYesThen

DataGrid1.AllowDelete=True

rs_zhiban.Delete

rs_zhiban.Update

DataGrid1.Refresh

MsgBox"成功删除!",vbOKOnly+vbExclamation,""

DataGrid1.AllowDelete=False

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论