主窗体代码
在本项目中,子菜单事件都是Click事件,这里先给出主窗体部分的代码。
下面是响应“增加用户”子菜单Click事件,调出增加用户窗体代码。
Private Sub adduser_Click()
frmadduser.Show
End Sub
下面是响应“查询输出”子菜单Click事件,调出查询输出窗体代码。
Private Sub chaxunshuchu_Click()
frmfind.Show
End Sub
下面是响应“退出”子菜单Click事件,调出退出窗体代码。
Private Sub exit_Click()
Unload Me
End Sub
下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。
Private Sub checkin_Click()
frmdengji.Show
End Sub
下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。
Private Sub changepwd_Click()
frmchangepwd.Show
End Sub
下面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。
Private Sub borrow_Click()
frmjieyue.Show
End Sub
下面是响应“图书赔偿”子菜单Click事件,调出图书赔偿窗体代码。
Private Sub tushupeichang_Click()
frmpeichang.Show 1
End Sub
下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。
Private Sub zhibanguanli_Click()
frmzhiban.Show 1
End Sub
下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。
Private Sub tousuguanli_Click()
frmtousu.Show 1
End Sub
2、各子窗体的代码
在各个子窗体建立好后,就可以根据各个子窗体的功能给它们添加相应代码了。
(1) 图书登记子窗体代码
本窗体用来填写图书登记的信息,用ADO来连接数据库,是本窗体的重点。采用MDI的子程序,所以运行后,它出现在主程序的界面下,如图33所示。
 图33 图书登记子窗体
按钮控件要求先填写基本信息,然后与数据库信息比较。
Private Sub Command1_Click()
On Error GoTo adderr
Text1.SetFocus
Adodc1.Recordset.AddNew
Exit Sub
adderr:
MsgBox Err.Description
End Sub
Private Sub Command2_Click()
On Error GoTo deleteerr
With Adodc1.Recordset
If Not .EOF And Not .BOF Then
If MsgBox("删除当前记录吗?", vbYesNo + vbQuestion) = vbYes Then
.Delete
.MoveNext
If .EOF Then .MoveLast
End If
End If
End With
Exit Sub
deleteerr:
MsgBox Err.Description
End Sub
Private Sub Command3_Click()
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
MsgBox "这是最后一条记录", vbOKCancel + vbQuestion
Adodc1.Recordset.MoveLast
End If
End Sub
Private Sub Command4_Click()
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
MsgBox "这是第一条记录", vbOKCancel + vbQuestion
Adodc1.Recordset.MoveFirst
End If
End Sub
Private Sub Command5_Click()
If Adodc1.Recordset.EOF Then
MsgBox "记录空", vbOKCancel + vbQuestion
End
Else
Adodc1.Recordset.MoveFirst
Exit Sub
End Sub
Private Sub Command6_Click()
If Adodc1.Recordset.RecordCount = 0 Then
MsgBox "空记录", vbOKCancel + vbQuestion
End
Else
Adodc1.Recordset.MoveLast
End If
End Sub
Private Sub Command7_Click()
MDIForm1.Show
frmdengji.Hide
End Sub
图书借阅和图书赔偿子窗体运行后如图34和图35所示,因为它们的代码和图书登记子窗体的代码雷同,在此不做重复。
 图34 图书借阅子窗体运行效果
 图35 图书赔偿子窗体运行效果
(2) 增加用户子窗体代码
增加用户子窗体是用来增加用户的用户名、密码和权限的。其运行效果如图36所示。
单击“确定”按钮后,还要返回一个信息框,提示成功信息,如图37所示。
 图36 增加用户子窗体运行效果 图37 成功信息框
窗体部分代码的思路是,收集输入的表中的字符串,然后与数据库中的系统的用户数据比较,如果不存在,则允许添加。
Private Sub Command1_Click()
Dim sql As String
Dim rs_add As New ADODB.Recordset
If Trim(Text1.Text) = "" Then
MsgBox "用户名不能为空", vbOKOnly + vbExclamation, ""
Exit Sub
Text1.SetFocus
Else
sql = "select * from 系统管理"
rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic
While (rs_add.EOF = False)
If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then
MsgBox "已有这个用户", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Combo1.Text = ""
Exit Sub
Else
rs_add.MoveNext
End If
Wend
If Trim(Text2.Text) <> Trim(Text3.Text) Then
MsgBox "两次密码不一致", vbOKOnly + vbExclamation, ""
Text2.SetFocus
Text2.Text = ""
Text3.Text = ""
Exit Sub
ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then
MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, ""
Combo1.SetFocus
Combo1.Text = ""
Exit Sub
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, ""
Unload Me
End If
End If
End Sub
(3) 修改密码子窗体代码
修改密码子窗体是用来修改用户密码的。其运行效果如图38所示。

图38 修改密码子窗体运行效果
在“确定”按钮的Click事件中添加如下代码:
Private Sub Command1_Click()
Dim rs_chang As New ADODB.Recordset
Dim sql As String
If Trim(Text1.Text) <> Trim(Text2.Text) Then
MsgBox "密码不一致!", vbOKOnly + vbExclamation, ""
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Else
sql = "select * from 系统管理 where 用户名=" & userID & ""
rs_chang.Open sql, conn, adOpenKeyset, adLockPessimistic
rs_chang.Fields(1) = Text1.Text
rs_chang.Update
rs_chang.Close
MsgBox "密码修改成功", vbOKOnly + vbExclamation, ""
Unload Me
End If
End Sub

在上述代码中,首先比较两个表中的数据是否一致,然后用rs_chang.Fields(1) = Text1.Text语句把代码输入到数据库中。最后,用MsgBox "密码修改成功", vbOKOnly + vbExclamation,""语句弹出一个信息框,告诉修改成功,如图39所示。
显示目录
(4) 库房管理子窗体代码
库房管理子窗体是用来管理图书资料的。其运行效果如图40所示。

图40 库房管理子窗体
实际上,设计库房管理子窗体的程序代码与增加用户子窗体的代码在思路上是完全相同的。就是在DataGrid的文本框中显示图书进出的清单,最后把填写的明细存储到数据库中。
检查代码如下:
Option Explicit
Dim rs_data2 As New ADODB.Recordset
Dim select_row As String
Dim showgrid2 As Boolean
Dim rs_custom As New ADODB.Recordset
Dim jinchu As String 进出库标志
Dim modify As Boolean 修改状态标志
Private Sub cmdexit_Click()
Unload Me
End Sub
Private Sub Form_Load()
On Error GoTo loaderror
Dim sql As String
sql = "select * from 图书资料"
rs_custom.CursorLocation = adUseClient
rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic
While Not rs_custom.EOF
Combo1.AddItem rs_custom.Fields(0)
rs_custom.MoveNext
Wend
findok = True
modify = False 非修改状态
showgrid2 = False
displaygrid1 调用显示Datagrid1子程序
loaderror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
|