
目 录
摘要 …………………………………………………………………………….2
关键词……………………………………………………………………………2
第一章 概述……………………………………………………………………. 2
第二章 系统分析………………………………………………………………2
2.1系统目标 ……………………………………………………………………3
2.2 功能分析 ……………………………………………………………………3
2.3系统流程………………………………………………………………………3
第三章 系统设计………………………………………………………………..2
3.1系统功能结构设计…………………………………………………………….2
3.2数据库设计…………………………………………………………………….3
第四章 公用模块设计………………………………………………….………6
第五章 系统登录…………………………………………………………..……6
第六章 MDI主窗口设计 ……………………………………………………….7
第七章 主要功能模块详细设计……………………………..……………….9
7.1车辆档案录入………………………………………………………………….9
7.2车辆运营列表…………………………………………………………………13
7.3车辆运营查询…………………………………………………………………16
7.4车辆事故列表…………………………………………………………………18
7.5车辆违章列表…………………………………………………………………22
7.6车辆维修列表…………………………………………………………………26
7.7驾驶员奖罚……………………………………………………………………30
第八章 数据库备份和恢复……………………………………………………..33
8.1数据库备份设计……………………………………………………………..33
8.2 数据库恢复设计………………………………………………………..….34
第九章结束语……………………………………………………………….…..34
参考文献………………………………………………………………..36
摘要:
随着计算机技术的迅速发展,计算机已经渗透到了各个应用领域。尤其是车辆的逐年增多和车辆的信息增加,车辆的管理不能够由传统的人工管理来进行管理,所以必须运用到计算机来进行管理。本车辆管理系统的完成就是基于VB应用程序和Access2000数据库,能够通过VB窗口对数据库进行操作。系统采用服务器(Server)形式,既方便实现车辆信息的查询,而且也大大提高了程序的可维护性和重复利用性。
关键词: VB程序设计,Access2000数据库,车辆管理.
第一章 概述
随着我国经济的快速发展,人民生活水平的提高,以及人们的对物资的购买力提高,汽车已成为人们不可缺少的交通工具。特别是对于拥有大量车辆的机关企事业单位来说,车辆的管理已成为日常事务中的一项重要的工作,为了如何让管理人员及时了解每一辆车的情况,提高车辆的使用效率,减少费用支出,成为各个单位需要解决的一个难题,为了规范企业内部的管理,提高企业管理质量,更好的服务于广大的客户的情况下,我们必须要开发一套专门用于车辆管理的系统,可以集中管理车辆的运营,维修,事故,违章等一系列的信息,使企业进入车辆管理信息化,科学化。同时也可以节省人力,物力,财力。
第二章 系统分析
(1)系统目标
针对相关车辆管理的情况,车辆管理系统要达到的目标:
*由人工管理过渡到机械自动化,系统化,规范化管理。
*违章车辆,事故车辆及车辆的维修费用一目了然。
*及时掌握车辆的运营情况,提高车辆的利用效和经济益。
(2)功能分析
系统功能分析是在系统开发总体任务的基础下完成的。车辆管理系统功能主要包括:档案管理,运营管理,车辆管理,驾驶员管理,系统维护等功能。
* 车辆档案录入,车辆档案查询,车辆异动,车辆异动查询,车辆报废,车辆报废查询。
* 车辆运营管理,车辆运营查询,清空运营列表。
* 车辆维修管理,车辆维修查询,添加零件,车辆违章管理,车辆违章查询,车辆事故管理,车辆事故查询。
* 驾驶员档案,驾驶员档案查询,驾驶员奖罚。
* 系统初始化,管理员设置,数据备份,数据恢复。
(3)系统流程
系统流程图
第三章 系统设计
(1)系统功能结构设计
系统功能结构图
(2)数据库设计
数据库的设计是根据用户的需求和数据是流量的大小来设计,同时结合Access 2000数据库操作方便,简单易学,系统资源占有低,不用数据库服务主持等优点,本系统使用了Access 2000数据库作为后台数据库.
车辆管理系统的数据表有以下表组成:用户表,车辆档案表,车辆报废表,车辆类型表,车辆事故表,车辆违章表,车辆维修表,车辆异动表,车辆运营表,驾驶员档案表,奖罚表,零件表。
1.用户表
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 用户姓名 | 文本 | 20 | 是 | 否 |
| 密码 | 文本 | 20 | 否 | 是 |
| 用户类型 | 文本 | 20 | 是 | 否 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 车辆类型 | 文本 | 10 | 是 | 否 |
| 驾驶员编号 | 文本 | 10 | 否 | 是 |
| 购置日期 | 时间/日期 | 是 | ||
| 厂牌型号 | 文本 | 30 | 否 | 是 |
| 使用人或单位 | 文本 | 30 | 否 | 是 |
| 车辆所在单位 | 文本 | 30 | 否 | 是 |
| 年检审 | 文本 | 2 | 否 | 是 |
| 保险否 | 文本 | 2 | 否 | 是 |
| 异地否 | 文本 | 2 | 否 | 是 |
| 报废否 | 文本 | 2 | 否 | 是 |
| 备注 | 备注 | 否 | 是 |
3 .车辆报废表
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 报废原因 | 文本 | 30 | 否 | 是 |
| 报废日期 | 时间/日期 | 是 | ||
| 经手人 | 文本 | 8 | 否 | 是 |
| 备注 | 备注 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 类型 | 文本 | 14 | 否 | 否 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 事故编号 | 文本 | 10 | 是 | 否 |
| 车辆号码 | 文本 | 10 | 是 | 否 |
| 车辆类型事故 | 文本 | 14 | 否 | 是 |
| 事故时间 | 时间/日期 | 是 | ||
| 事故概要 | 文本 | 50 | 是 | 否 |
| 事故确认者 | 文本 | 8 | 是 | 否 |
| 公司负担金 | 数字 | 双精度型 | 否 | |
| 保险理赔金 | 数字 | 双精度型 | 否 | |
| 对方赔偿金 | 数字 | 双精度型 | 是 | 否 |
| 对方姓名 | 文本 | 8 | 是 | 是 |
| 对付住址 | 文本 | 30 | 否 | 是 |
| 对方所在单位 | 文本 | 30 | 否 | 是 |
| 对方损坏程度 | 文本 | 10 | 否 | 是 |
| 和解内容 | 备注 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 原因 | 文本 | 10 | 是 | 否 |
| 处罚 | 文本 | 30 | 否 | 是 |
| 违章时间 | 时间/日期 | 是 | ||
| 备注 | 备注 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 更换零件1 | 文本 | 20 | 否 | 是 |
| 零件1数量 | 数字 | 整型 | 否 | |
| 更换零件2 | 文本 | 20 | 否 | 是 |
| 零件2数量 | 数字 | 整型 | 否 | |
| 更换零件3 | 文本 | 20 | 否 | 是 |
| 零件3数量 | 数字 | 整型 | 否 | |
| 维修日期 | 时间/日期 | 是 | ||
| 共计费用 | 文本 | 2 | 否 | 是 |
| 备注 | 备注 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 异动时间 | 时间/日期 | 是 | ||
| 异动地点 | 文本 | 30 | 是 | 否 |
| 经手人 | 文本 | 8 | 否 | 是 |
| 备注 | 备注 | 是 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 车牌号码 | 文本 | 10 | 是 | 否 |
| 运营日期 | 日期/时间 | 是 | ||
| 运营时间 | 数字 | 整型 | 是 | 否 |
| 运营收入 | 数字 | 双精度型 | 是 | 是 |
| 备注 | 数字 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 必添字段 | 允许空字符串 |
| 驾驶员编号 | 文本 | 18 | 是 | 否 |
| 姓名 | 文本 | 8 | 是 | 否 |
| 性别 | 文本 | 2 | 是 | 否 |
| 出生年月 | 日期/时间 | 是 | ||
| 驾驶证号 | 文本 | 30 | 是 | 否 |
| 领证明日期 | 数字 | |||
| 证件有效期 | 文本 | 15 | 是 | 否 |
| 驾龄 | 日期/时间 | 双精度型 | 否 | |
| 准驾车型 | 文本 | 14 | 否 | 是 |
| 何时参加工作 | 日期/时间 | 否 | ||
| 联系电话 | 文本 | 16 | 否 | 是 |
| 年检记录 | 文本 | 20 | 否 | 是 |
| 备注 | 备注 | 否 | 是 |
| 字段名称 | 数据类型 | 字段大小 | 字段大小 | 允许空字符串 |
| 车牌号码 | 文本 | 8 | 是 | 否 |
| 姓名 | 文本 | 8 | 是 | 否 |
| 运营收入 | 数字 | 双精度型 | 否 | |
| 运营次数 | 数字 | 整型 | 否 | |
| 维修费用 | 数字 | 双精度型 | 否 | |
| 违章次数 | 数字 | 整型 | 否 | |
| 事故次数 | 数字 | 整型 | 否 | |
| 日期 | 文本 | 12 | 是 | 否 |
| 每月得分 | 数字 | 双精度型 | 是 | |
| 每月奖金 | 数字 | 双精度型 | 否 |
| 字段名称 | 数据类型 | 字段大小 | 字段大小 | 允许空字符串 |
| 零件名 | 文本 | 30 | 是 | 否 |
| 单价 | 数字 | 双精度型 | 否 |
为了节省系统资源,必须要新建设一个模块,该模块用于连接各个模块中的数据表,,从而不避免在程序中运用大量的ADO控件,给开发应用程序带来诸多不便.该模块中的程序代码如下:
Public adoCon As New ADODB.Connection
Public adors As New ADODB.Recordset
Public Sub main()
Set adoCon = New ADODB.Connection
adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\clgl.mdb" & ";Persist Security Info=False"
frmLogin.Show
frmLogin.Text1.SetFocus
End Sub
第五章 系统登录
系统登录窗口是操作用户进入系统的惟一入口,分为两种权限:管理员权限和普通用户权限.通过在”登录”按钮的Click事件下使用SQL语句判断用户名称,密码和用户类型,进入系统.
操作用户的权限不同的功能模块也不同,管理员可以维护整个系统和系统操纵身分,而普通用户只能对系统各别功能进行操作.
* 窗口界面设计
系统等录窗口设计图
(1)新建设又个窗口,设置该窗口的名称为“ frrmlogin”,caption属性为“系统登录”,设置Borderstyle属性为“1-fiexed single”, 在该窗口上依次添加控件。
(2)在frrmlogin窗口上添加Label,ComboBox控件。
(3)在窗口上添加Text控件。
(4)程序代码是:
Private Sub Command1_Click()
If Text3.Text = "" Then
MsgBox "您还没有注册系统用户!", , "系统提示"
MDIForm1.Show
Unload Me
Exit Sub
End If
Set adors = adoCon.Execute("select * from 用户表 where 用户姓名=ltrim('" & Text1 & "') and 密码=ltrim('" & Text2 & "') and 用户类型=ltrim('" & Combo1.Text & "')")
If adors.EOF Then
MsgBox "您输入的信息有误,请重新输入!", , "系统提示"
Text1 = ""
Text2 = ""
Text1.SetFocus
i = i + 1
If i = 3 Then
MsgBox "对不起,您已无权使用本系统!", , "系统提示"
Unload Me
End If
Else
Select Case adors!用户类型
Case "管理员"
Case "普通用户"
MDIForm1.mnuyydelete.Enabled = False
MDIForm1.mnusyscsh.Enabled = False
MDIForm1.mnuglyset.Enabled = False
End Select
MDIForm1.Show
adors.Close
Unload Me
End If
End Sub
Private Sub Command2_Click()
Unload Me
'adoRs.Close
End Sub
]
第六章 MDI主窗口设计
车辆管理系统 主窗口MID的设计采用了多文档界面,即MDI技术.MDI窗口为程序提供了高效,多功能的良好平台,它的应用很广泛.
MID主窗口主要是由车辆档案管理,车辆运营管理,驾驶员管理,系统维护等几个大模块来组成的,也是退出系统的惟一出口。
MDI主窗口设计图
(1)程序代码设计
*在主窗口菜单 “车辆运营管理”子菜单“清空运营表”的Click事件下添加如下代 码
Private Sub mnuyydelete_Click()
If MsgBox("真的要清空运营表吗?", vbOKCancel, "系统提示") = vbOK Then
adoCon.Execute ("delete from 车辆运营表")
Else
Exit Sub
End If
End Sub
*在主窗口菜单“系统维护” 子菜单“系统初始化” 的Click事件下添加如下代码:
Private Sub mnusyscsh_Click()
If MsgBox("执行此命令会清空数据库里所有记录,确实要执行吗?", vbOKCancel, "系统提示") = vbOK Then
adoCon.Execute ("delete from 车辆档案")
adoCon.Execute ("delete from 车辆报废表")
adoCon.Execute ("delete from 车辆事故表")
adoCon.Execute ("delete from 车辆违章表")
adoCon.Execute ("delete from 车辆维修表")
adoCon.Execute ("delete from 车辆异动表")
adoCon.Execute ("delete from 车辆运营表")
adoCon.Execute ("delete from 驾驶员档案")
adoCon.Execute ("delete from 零件表")
adoCon.Execute ("delete from 用户表")
adoCon.Execute ("delete from 奖罚表")
Else
Exit Sub
End If
End Sub
*在 ToolBar控件的索引值调用子窗口,在ToolBar控件的ButtonClick事件下添加如下代码:
Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu)
Select Case ButtonMenu.Index
Case 1
Call mnucardacha_Click
Case 2
Call mnujsycha_Click
Case 3
Call mnucaryycha_Click
Case 5
Call mnucarwxcha_Click
Case 6
Call mnucarwzcha_Click
Case 7
Call mnucarsgcha_Click
End Select
End Sub
第七章 主要功能模块详细设计
(1)车辆档案录入
车辆档案录入操作窗口用于添加,修改,删除车辆信息。车辆档案的添加,修改,删除可以通过ADO对象来实现,也可以通过ADO控件实现,要使用到AddNew,Updateh和 Delete方法。
1 窗口界面设计
车辆档案窗口设计图
2程序代码设计
*设计一个Lockctl过程使控件不可用,该过程如下:
Private Sub Lockctl()
Text1.Enabled = False: Combo1.Enabled = False: Combo2.Enabled = False
Text4.Enabled = False: Text5.Enabled = False: Text6.Enabled = False
Text7.Enabled = False
DTPicker1.Enabled = False
cmnj.Enabled = False: cmbx.Enabled = False: cmyd.Enabled = False: cmbf.Enabled = False
End Sub
Private Sub Unlockctl()
Text1.Enabled = True: Combo1.Enabled = True: Combo2.Enabled = True
Text4.Enabled = True: Text5.Enabled = True: Text6.Enabled = True
Text7.Enabled = True
DTPicker1.Enabled = True
cmnj.Enabled = True: cmbx.Enabled = True: cmyd.Enabled = True: cmbf.Enabled = True
End Sub
Dim i As Integer
Private Sub Form_Load()
frmcardalr.Height = 3075: frmcardalr.Width = 7410
Adodc1.RecordSource = "select * from 车辆档案"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then DTPicker1.Value = Adodc1.Recordset.Fields("购置日期")
Adodc2.RecordSource = "select * from 车辆类型表"
Adodc2.Refresh
If Adodc2.Recordset.RecordCount = 0 Then Exit Sub
For i = 0 To Adodc2.Recordset.RecordCount - 1
Combo1.AddItem Adodc2.Recordset.Fields(0).Value
Adodc2.Recordset.MoveNext
Next
Adodc3.RecordSource = "select * from 驾驶员档案"
Adodc3.Refresh
If Adodc3.Recordset.RecordCount = 0 Then Exit Sub
For i = 0 To Adodc3.Recordset.RecordCount - 1
Combo2.AddItem Adodc3.Recordset.Fields(0).Value
Adodc3.Recordset.MoveNext
Next
On Error Resume Next
Combo1.Text = Adodc1.Recordset.Fields(1)
Combo2.Text = Adodc1.Recordset.Fields(2)
End Sub
*在Text1控件的LostFocus事件下,用户添加的“车牌号码”是否与表中的数据重复,其代码为:
Private Sub Text1_LostFocus()
Dim rs As New ADODB.Recordset
Set rs = adoCon.Execute("select * from 车辆档案 where 车牌号码='" & Text1.Text
If rs.EOF = False Then
MsgBox "此车牌号码已经存在!", , "系统提示"
Text1 = ""
Text1.SetFocus
End If
rs.Close
End Sub
*在“添加”按钮的Click事件下添加代码为:
Private Sub cmdAdd_Click()
Unlockctl
DTPicker1.Value = Format(Now, "yyyy-mm-dd")
Text1 = "": Text2 = "": Combo2 = "": Text4 = "": Text5 = "": Text6 = "": Text7 = ""
Combo1.Text = ""
cmnj.Text = "是"
cmbx.Text = "是"
cmyd.Text = "是"
cmbf.Text = "是"
Text1.SetFocus
cmdOk.Enabled = True: cmdCancel.Enabled = True
cmdDelete.Enabled = False: Combo1.Visible = True
Adodc1.Enabled = False: cmdUpdate.Enabled = False
i = 1
End Sub
*在“修改” 按钮的Click事件下添加代码为:
Private Sub cmdUpdate_Click()
Unlockctl
i = 2
cmdOk.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
Adodc1.Enabled = False: Text1.Enabled = False
End Sub
* 在“删除”的按钮的Click事件下添加代码为:
Private Sub cmdDelete_Click()
If MsgBox("您确实要删除记录吗?", vbOKCancel, "系统提示") = vbOK Then
adoCon.Execute ("delete from 车辆档案 where 车牌号码='" & Text1 & "'")
MsgBox " 记录已删除!", , "系统提示"
Adodc1.Refresh
End If
End Sub
* 在“确定” 的按钮的Click事件下添加代码为:
Private Sub cmdOk_Click()
Select Case i
Case 1
If Text1 = "" Then
MsgBox "车牌号码不能为空", , "系统提示"
Text1.SetFocus
Exit Sub
End If
If Combo1.Text = "" Then
MsgBox "车辆类型不能为空", , "系统提示"
Combo1.SetFocus
Exit Sub
End If
If DTPicker1.Value = "" Then
MsgBox "购置日期不能为空", , "系统提示"
DTPicker1.SetFocus
Exit Sub
End If
adoCon.Execute ("insert into 车辆档案 values ('" & Text1 & "','" & Combo1 & "','" & Combo2 & "','" & DTPicker1.Value & "','" & Text7 & "','" & Text4 & "','" & Text5 & "','" & cmnj & "','" & cmbx & "','" & cmyd & "','" & cmbf & "','" & Text6 & "')")
MsgBox "记录添加成功!", , "系统提示"
Adodc1.Refresh
Case 2
adoCon.Execute ("update 车辆档案 set 车辆类型='" & Combo1 & "',驾驶员编号='" & Combo2 & "',使用人或单位='" & Text4 & "',车辆所在单位='" & Text5 & "',备注='" & Text6 & "', 厂牌型号='" & Text7 & "',购置日期='" & DTPicker1.Value & "',年检审='" & cmnj.Text & "',保险否='" & cmbx.Text & "',异动否='" & cmyd.Text & "',报废否='" & cmbf.Text & "' where 车牌号码='" & Text1 & "'")
MsgBox "记录修改成功!", , "系统提示"
Adodc1.Refresh
End Select
Lockctl
cmdOk.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
End Sub
* 在“取消” 的按钮的Click事件下添加代码为:
Private Sub cmdCancel_Click()
On Error Resume Next '当没有添加数据的时候 处理异常
Adodc1.Recordset.CancelUpdate
Adodc1.Refresh
Lockctl
cmdOk.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
End Sub
(2)车辆运营列表
车辆运营列表窗口用于添加,修改,删除车辆运营信息,通过Adodc控件实现车辆档案信息的添加,修改,删除的过程。
1 窗口界面设计
车辆运营列表窗口设计图
2 程序代码设计
●设计一个Lockctl过程使控件不可用,该过程为:
Private Sub Lockctl()
Text1.Enabled = False: Text2.Enabled = False
Text3.Enabled = False: Text4.Enabled = False
DTPicker1.Enabled = False
End Sub
* 设计一个Lockctl过程使控件可用,该过程为:
Private Sub Unlockctl()
Text1.Enabled = True: Text2.Enabled = True
Text3.Enabled = True: Text4.Enabled = True
DTPicker1.Enabled = True
End Sub
* 在代码窗口中定义数值型变量,作为保存或修改操作的开关变量
Dim i As Integer
●在窗口Load事件下添加代码:
Private Sub Form_Load()
frmcarYYlr.Height = 2070: frmcarYYlr.Width = 7755
Adodc1.RecordSource = "select * from 车辆运营表"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then DTPicker1.Value = Adodc1.Recordset.Fields("运营日期").Value
End Sub
Private Sub Text1_LostFocus()
If Text1.Text = "" Then Exit Sub
Dim rss As New ADODB.Recordset
Dim rss1 As New ADODB.Recordset
Dim rss2 As New ADODB.Recordset
'此车是否是本公司的
Set rss = adoCon.Execute("select * from 车辆档案 where 车牌号码='" & Text1.Text & "'")
If rss.EOF Then
MsgBox "这辆车不属于本公司的!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss.Close
'此车是否报废了
Set rss1 = adoCon.Execute("select * from 车辆报废表 where 车牌号码='" & Text1.Text & "'")
If rss1.EOF Then
Else
MsgBox "此车已经报废,不能参加运营!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss1.Close
'此车是否异动了
Set rss2 = adoCon.Execute("select * from 车辆异动表 where 车牌号码='" & Text1.Text & "'")
If rss2.EOF Then
Else
MsgBox "此车为“异动车辆”不能参加运营!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss2.Close
End Sub
* 在“添加”按钮的Click事件下,通过ADO控件的NDDNEW方法开辟存储数据的空间,其代码为:
Private Sub cmdAdd_Click()
Unlockctl
Adodc1.Recordset.AddNew
Text1 = "": Text2 = ""
Text3 = "": Text4 = ""
Text1.SetFocus
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdUpdate.Enabled = False: cmdDelete.Enabled = False
Adodc1.Enabled = False
i = 1
End Sub
●在“修改” 按钮的Click事件下,添加代码为:
Private Sub cmdUpdate_Click()
Unlockctl
Text1.Enabled = False
i = 2
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
Adodc1.Enabled = False
End Sub
●在“删除” 按钮的Click事件下,通过ADO控件的NDDNEW方法删除数据,其代码为:
Private Sub cmdDelete_Click()
If MsgBox("您确实要删除记录吗?", vbOKCancel, "系统提示") = vbOK Then
Adodc1.Recordset.Delete
MsgBox " 记录已删除!", , "系统提示"
Adodc1.Refresh
End If
End Sub
●在“确定” 按钮的Click事件下,添加代码为:
Private Sub cmdOk_Click()
Select Case i
Case 1
If Text1.Text = "" Then
MsgBox "车牌号码不能为空!!", , "系统提示"
Text1.SetFocus
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "运营时间不能为空!!", , "系统提示"
Text2.SetFocus
Exit Sub
Text3.SetFocus
End If
If Text3.Text = "" Then
MsgBox "运营收入不能为空!!", , "系统提示"
Text3.SetFocus
Exit Sub
End If
Adodc1.Recordset.Fields(1) = DTPicker1.Value
Adodc1.Recordset.Update
MsgBox "记录添加成功!", , "系统提示"
Case 2
Adodc1.Recordset.Update
MsgBox "记录修改成功!", , "系统提示"
End Select
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
End Sub
●在“取消” 按钮的Click事件下,通过ADO控件CancelUpdate方法撤消对当前记录所作的任何更改或放弃新添加的记录,其代码为:
Private Sub cmdCancel_Click()
On Error Resume Next '当没有添加数据的时候 处理异常
Adodc1.Recordset.CancelUpdate
Adodc1.Refresh
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
End Sub
(3)车辆运营查询
车辆运营查询窗口主要完成按长牌号码,运营日期和运营时间来查询车辆运营情况。运营日期段和运营时间段查询功能的实现主要使用了SQL中的Between......And语句.
1窗口界面设计
车辆运营查询窗口设计图
2程序代码设计
●设计一个Rebind过程,用于显示表中所以数据:
Private Sub Rebind()
Frame2.Caption = "车辆运营列表"
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\clgl.mdb " & ";Persist Security Info=False"
Adodc1.RecordSource = "select * from 车辆运营表"
Adodc1.Refresh
End Sub
●设计一个QingKong过程。用于显示查询结果数据:
Private Sub QingKong()
Frame2.Caption = "您所要查询的车辆运营记录如下:"
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\clgl.mdb " & ";Persist Security Info=False"
Adodc1.RecordSource = "select * from 车辆运营表 where 1=0"
Adodc1.Refresh
End Sub
●在窗口Load事件下添加代码为:
Private Sub Form_Load()
frmcarYYcha.Width = 6615
frmcarYYcha.Height = 4260
Call Rebind
Set adors = adoCon.Execute("select distinct 车牌号码 from 车辆运营表")
On Error Resume Next
Do
cmcp.AddItem adors.Fields(0)
adors.MoveNext
Loop Until adors.EOF
adors.Close
For i = 1 To 24
cmbstar.AddItem i
cmbend.AddItem i
Next i
cmbstar.ListIndex = 7
cmbend.ListIndex = 11
End Sub
●在“查询”按钮的Click事件下利用Like运算和%通配符在数据库中匹配数据的模块,添加代码为:
Private Sub cmdCha_Click()
'点击查询按纽后首先清空车辆档案列表
Call QingKong
Dim sql As String
Dim scp As String
If ckcp.Value Then
scp = "车牌号码 like '%" & cmcp.Text & "%'"
Else
scp = "车牌号码 like '%'"
End If
Dim sdate As String
If ckDate.Value Then
sdate = "运营日期 between #" & dtStart.Month & "/" & dtStart.Day & "/" & dtStart.Year & "# and #" & dtEnd.Month & "/" & dtEnd.Day & "/" & dtEnd.Year & "#"
Else
sdate = "运营日期 like '%'"
End If
Dim stime As String
If ckTime.Value Then
stime = "运营时间 between " & Combo1.Text & " and " & Combo2.Text & ""
Else
stime = "运营时间 like '%'"
End If
sql = "select * from 车辆运营表 where " & scp & "and " & sdate & "and " & stime
If sql = "select * from 车辆运营表 where 车牌号码 like '%'and 运营日期 like '%'and 运营时间 like '%'" Then
Call QingKong
MsgBox "请选择查询条件"
Exit Sub
End If
Set adors = adoCon.Execute(sql)
If adors.EOF Then
Call QingKong
MsgBox "对不起,没有符合您查询条件的车辆!"
Else
Adodc1.RecordSource = sql
Adodc1.Refresh
End If
adors.Close
ckcp.Value = 0
ckTime.Value = 0
ckDate.Value = 0
End Sub
(4)车辆事故列表
车辆事故列表窗口用于添加,修改,删除车辆事故信息。车辆事故列表只能添加本单位的车辆,异动车辆是 不能添加到列表中,利用了Text1控件的LostFocus事脚,在车辆异动表中通过SQL语句查询Text2控件中车牌号码是否异动车辆.
1 窗口界面设计
车辆事故列表窗口设计图
2 程序代码设计
●设计一个过程Lockctl,用来设置控件不可用,其代码为:
Private Sub Lockctl()
Text1.Enabled = False: Text2.Enabled = False
Text3.Enabled = False: Text5.Enabled = False
Text6.Enabled = False: Text7.Enabled = False
Text8.Enabled = False: Text9.Enabled = False
Text10.Enabled = False: Text11.Enabled = False
Text12.Enabled = False: Text13.Enabled = False
Text14.Enabled = False: DTPicker1.Enabled = False: TextDTP.Enabled = False
End Sub
●设计一个过程Unlockctl,用来设置控件可用,其代码为:
Private Sub Unlockctl()
Text1.Enabled = True: Text2.Enabled = True
Text3.Enabled = True: Text5.Enabled = True
Text6.Enabled = True: Text7.Enabled = True
Text8.Enabled = True: Text9.Enabled = True
Text10.Enabled = True: Text11.Enabled = True
Text12.Enabled = True: Text13.Enabled = True
Text14.Enabled = True: DTPicker1.Enabled = True: TextDTP.Enabled = True
End Sub
●在代码窗口中定义数值型变量,作为保存或修改操作的开关变量。
Dim As Integer
●在窗口Load事件下添加如下代码:
Private Sub Form_Load()
frmcarSGlr.Width = 10350: frmcarSGlr.Height = 3435
Adodc2.RecordSource = "select * from 车辆类型表"
Adodc2.Refresh
For i = 0 To Adodc2.Recordset.RecordCount - 1
Text.AddItem Adodc2.Recordset.Fields(0).Value
Adodc2.Recordset.MoveNext
Next
Combo1.Text = Adodc1.Recordset.Fields(2)
End Sub
●在“添加”按钮的Click事件下添加如下代码:
Private Sub cmdAdd_Click()
Unlockctl
Text1 = "": Text2 = "": Text3 = "": Text5 = ""
Text6 = "": Text7 = "": Text8 = "": Text9 = ""
Text10 = "": Text11 = "": Text12 = "": Text13 = ""
Text14 = "": Text3 = "": Text1.SetFocus
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdUpdate.Enabled = False: cmdDelete.Enabled = False
DTPicker1.Visible = True
TextDTP.Visible = False: Adodc1.Enabled = False
i = 1
End Sub
●在Text控件的LostFocus事件下添加如下代码:
Private Sub Text2_LostFocus()
If Text2.Text = "" Then Exit Sub
Dim rss As New ADODB.Recordset
Set rss = adoCon.Execute("select * from 车辆档案 where 车牌号码='" & Text2.Text & "'")
If rss.EOF Then
MsgBox "这辆车不属于本公司的!", , "系统提示"
Text2.Text = ""
Text2.SetFocus
Exit Sub
Else
Text3.Text = rss.Fields(1).Value
End If
rss.Close
Dim rss1 As New ADODB.Recordset
Set rss1 = adoCon.Execute("select * from 车辆异动表 where 车牌号码='" & Text2.Text & "'")
If rss1.EOF = False Then
MsgBox "这辆车为异动车辆!", , "系统提示"
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
rss1.Close
End Sub
●在“修改” 按钮的Click事件下添加如下代码:
Private Sub cmdUpdate_Click()
Unlockctl
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
DTPicker1.Visible = True: TextDTP.Visible = False
Adodc1.Enabled = False: Text1.Enabled = False
i = 2
End Sub
●在“删除” 按钮的Click事件下添加如下代码:
Private Sub cmdDelete_Click()
If MsgBox("您确实要删除记录吗?", vbOKCancel, "系统提示") = vbOK Then
adoCon.Execute ("delete from 车辆事故表 where 事故编号='" & Text1 & "'")
MsgBox " 记录已删除!", , "系统提示"
Adodc1.Refresh
End If
End Sub
●在“确定” 按钮的Click事件下添加如下代码:
Private Sub cmdOk_Click()
Select Case i
Case 1:
If Text1.Text = "" Then
MsgBox "事故编号不能为空!", , "系统提示"
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "车牌号码不能为空!", , "系统提示"
Text2.SetFocus: Exit Sub
End If
If Text5.Text = "" Then
MsgBox "事故概要不能为空!", , "系统提示"
Text5.SetFocus: Exit Sub
End If
If Text6.Text = "" Then
MsgBox "事故确认者不能为空!!", , "系统提示"
Text6.SetFocus: Exit Sub
End If
If Text10 = "" Then
MsgBox "对方姓名不能为空!!", , "系统提示"
Text10.SetFocus: Exit Sub
End If
adoCon.Execute ("insert into 车辆事故表 values ('" & Text1 & "','" & Text2 & "','" & Text3.Text & "','" & DTPicker1.Value & "','" & Text5 & "','" & Text6 & "','" & Text7 & "','" & Text8 & "','" & Text9 & "','" & Text10 & "','" & Text11 & "','" & Text12 & "','" & Text13 & "','" & Text14 & "')")
MsgBox "记录添加成功!", , "系统提示"
Adodc1.Refresh
Case 2
adoCon.Execute ("update 车辆事故表 set 车牌号码='" & Text2.Text & "',车辆类型='" & Text3.Text & "',事故时间='" & DTPicker1.Value & "',事故概要='" & Text5.Text & "',事故确认者='" & Text6.Text & "',公司负担金='" & Text7.Text & "',保险理赔金='" & Text8.Text & "',对方赔偿金='" & Text9.Text & "',对方姓名='" & Text10.Text & "',对方住址='" & Text11.Text & "',对方所在单位='" & Text12.Text & "',对方损坏程度='" & Text13.Text & "',和解内容='" & Text14.Text & "' where 事故编号='" & Text1.Text & "'")
MsgBox "记录修改成功!", , "系统提示"
Adodc1.Refresh
End Select
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: DTPicker1.Visible = False
TextDTP.Visible = True: Adodc1.Enabled = True
End Sub
●在“取消” 按钮的Click事件下添加如下代码:
Private Sub cmdUpdate_Click()
Unlockctl
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
DTPicker1.Visible = True: TextDTP.Visible = False
Adodc1.Enabled = False: Text1.Enabled = False
i = 2
End Sub
(5)车辆违章列表
车辆违章列表记录操作窗口用于添加,修改,删除车辆违章信息.报废车辆和异动车辆不允许记录在车辆违章列表中。
1 窗口界面设计
车辆违章记录窗口设计图
2 程序代码设计
●设计一个过程Lockctl,用来设置控件不可用,其代码为:
Private Sub Lockctl()
Text1.Enabled = False: Text2.Enabled = False
Text3.Enabled = False: Text4.Enabled = False
DTPicker1.Enabled = False
End Sub
●设计一个过程Lockctl,用来设置控件可用,其代码为
Private Sub Unlockctl()
Text1.Enabled = True: Text2.Enabled = True
Text3.Enabled = True: Text4.Enabled = True
DTPicker1.Enabled = True
End Sub
●在代码窗口中定义数值型变量,作为保存或修改操作的开关变量:
Dim i As Integer
●在窗口Load事件下添加如下代码:
Private Sub Form_Load()
frmcarWZlr.Width = 6720: frmcarWZlr.Height = 2730
Adodc1.RecordSource = "select * from 车辆违章表"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then DTPicker1.Value = Adodc1.Recordset.Fields("违章时间").Value
End Sub
●判断报废车辆和异动车辆不可以添加到违章列表中,在Text1和LostFocus事件下添加如下代码:
Private Sub Text1_LostFocus()
If Text1.Text = "" Then Exit Sub
Dim rss As New ADODB.Recordset
Set rss = adoCon.Execute("select * from 车辆档案 where 车牌号码='" & Text1.Text & "'")
If rss.EOF Then
MsgBox "这辆车不属于本公司的!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss.Close
Dim rss1 As New ADODB.Recordset
Set rss1 = adoCon.Execute("select * from 车辆异动表 where 车牌号码='" & Text1.Text & "'")
If rss1.EOF Then
Else
MsgBox "该车为异动车辆!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss1.Close
Dim rss2 As New ADODB.Recordset
Set rss2 = adoCon.Execute("select * from 车辆报废表 where 车牌号码='" & Text1.Text & "'")
If rss2.EOF Then
Else
MsgBox "该车已经报废!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss2.Close
End Sub
●在“添加”按钮的Click事件下添加如下代码:
Private Sub cmdAdd_Click()
Adodc1.Recordset.AddNew
Unlockctl
Text1 = "": Text2 = ""
Text3 = "": Text4 = ""
DTPicker1.Value = Format(Now, "yyyy-mm-dd")
Text1.SetFocus
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdUpdate.Enabled = False: cmdDelete.Enabled = False
i = 1
Adodc1.Enabled = False
End Sub
●在“修改” 按钮的Click事件下添加如下代码:
Private Sub cmdUpdate_Click()
Unlockctl
Text1.Enabled = False: Adodc1.Enabled = False
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
i = 2
End Sub
●在“删除” 按钮的Click事件下添加如下代码:
Private Sub cmdDelete_Click()
If MsgBox("您确实要删除记录吗?", vbOKCancel, "系统提示") = vbOK Then
Adodc1.Recordset.Delete
MsgBox " 记录已删除!", , "系统提示"
Adodc1.Refresh
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End If
End Sub
●在“确定” 按钮的Click事件下添加如下代码:
Private Sub cmdOk_Click()
Select Case i
Case 1
If Text1 = "" Then
MsgBox "车牌号码不能为空", , "系统提示"
Text1.SetFocus: Exit Sub
End If
If Text2 = "" Then
MsgBox "违章原因不能为空", , "系统提示"
Text2.SetFocus: Exit Sub
End If
If DTPicker1.Value = "" Then
MsgBox "违章时间不能为空", , "系统提示"
DTPicker1.SetFocus: Exit Sub
End If
Adodc1.Recordset.Fields(0) = Text1.Text
Adodc1.Recordset.Fields(1) = Text2.Text
Adodc1.Recordset.Fields(2) = Text3.Text
Adodc1.Recordset.Fields(3) = DTPicker1.Value
Adodc1.Recordset.Fields(4) = Text4.Text
Adodc1.Recordset.Update
MsgBox "记录添加成功!", , "系统提示"
Case 2
On Error Resume Next
Adodc1.Recordset.Fields(0) = Text1.Text
Adodc1.Recordset.Fields(1) = Text2.Text
Adodc1.Recordset.Fields(2) = Text3.Text
Adodc1.Recordset.Fields(3) = DTPicker1.Value
Adodc1.Recordset.Fields(4) = Text4.Text
Adodc1.Recordset.Update
MsgBox "记录修改成功!", , "系统提示"
End Select
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
Command1(0).Enabled = False: Command1(1).Enabled = False
Command1(2).Enabled = False: Command1(3).Enabled = False
End Sub
●在“取消” 按钮的Click事件下添加如下代码
Private Sub cmdCancel_Click()
On Error Resume Next '当没有添加数据的时候 处理异常
Adodc1.Recordset.CancelUpdate
Adodc1.Refresh
Lockctl
cmdCancel.Enabled = False: cmdok.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
End Sub
(6) 车辆维修列表
车辆维修列表主要是用来管理车辆维修的基本信息,计算车辆维修使用零件的费用。车辆维修的算法是:零件数量*零件价格.
1窗口界面设计
车辆维修窗口设计图
2程序代码设计
●设计一个过程Lockctl,用来锁定控件,其代码为;
Private Sub Lockctl()
Text1.Enabled = False: Combo1.Enabled = False
Combo2.Enabled = False: Combo3.Enabled = False
Tc1.Enabled = False: Tc2.Enabled = False
Text5.Enabled = False: Text6.Enabled = False
DTPicker1.Enabled = False: Tc3.Enabled = False
End Sub
●设计一个过程Unlockctl,用来解除锁定控件,其代码为:
Private Sub Unlockctl()
Text1.Enabled = True: Combo1.Enabled = True
Combo2.Enabled = True: Combo3.Enabled = True
Tc1.Enabled = True: Tc2.Enabled = True
Tc3.Enabled = True: Text6.Enabled = True
DTPicker1.Enabled = True
End Sub
●在代码窗口中定义数值型变量,控制保存数据或修改数据的一个开关变量:
Dim As Integer
●在该窗口Load事件下添加如下代码为:
Private Sub Form_Load()
frmcarWXlr.Width = 8490
frmcarWXlr.Height = 3150
Adodc1.RecordSource = "select * from 车辆维修表"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then DTPicker1.Value = Adodc1.Recordset.Fields("维修日期").Value
Adodc2.RecordSource = "select * from 零件表"
Adodc2.Refresh
For i = 0 To Adodc2.Recordset.RecordCount - 1
Combo1.AddItem Adodc2.Recordset.Fields(0).Value
Combo2.AddItem Adodc2.Recordset.Fields(0).Value
Combo3.AddItem Adodc2.Recordset.Fields(0).Value
Adodc2.Recordset.MoveNext
Next
If Adodc1.Recordset.RecordCount = 0 Then Exit Sub
Combo1.Text = Adodc1.Recordset.Fields(2)
Combo2.Text = Adodc1.Recordset.Fields(4)
Combo3.Text = Adodc1.Recordset.Fields(6)
cmdT.Enabled = False
End Sub
●报废车辆和违章车辆不能进行维修,在Text1和LostFocus事件下添加代码为:
Private Sub Text1_LostFocus()
If Text1.Text = "" Then Exit Sub
Dim rss As New ADODB.Recordset
Set rss = adoCon.Execute("select * from 车辆档案 where 车牌号码='" & Text1.Text & "'")
If rss.EOF Then
MsgBox "这辆车不属于本公司的!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss.Close
Dim rss1 As New ADODB.Recordset
Set rss1 = adoCon.Execute("select * from 车辆异动表 where 车牌号码='" & Text1.Text & "'")
If rss1.EOF Then
Else
MsgBox "该车为异动车辆!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss1.Close
Dim rss2 As New ADODB.Recordset
Set rss2 = adoCon.Execute("select * from 车辆报废表 where 车牌号码='" & Text1.Text & "'")
If rss2.EOF Then
Else
MsgBox "该车已经报废,不能维修!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss2.Close
End Sub
●在“统计“按钮的Click事件下添加如下代码:
Private Sub cmdT_Click()
Dim c1, c2, c3 As Integer
On Error Resume Next
Adodc2.RecordSource = "select 单价 from 零件表 where 零件名='" & Combo1.Text & "'"
Adodc2.Refresh
c1 = Val(Adodc2.Recordset.Fields(0)) * Val(Tc1.Text)
Adodc2.RecordSource = "select 单价 from 零件表 where 零件名='" & Combo2.Text & "'"
Adodc2.Refresh
c2 = Val(Adodc2.Recordset.Fields(0)) * Val(Tc2.Text)
Adodc2.RecordSource = "select 单价 from 零件表 where 零件名='" & Combo3.Text & "'"
Adodc2.Refresh
c3 = Val(Adodc2.Recordset.Fields(0)) * Val(Tc3.Text)
Text5.Text = c1 + c2 + c3
cmdok.Enabled = True
End Sub
●在“添加” 按钮的Click事件下添加如下代码:
Private Sub cmdAdd_Click()
Unlockctl
DTPicker1.Value = Format(Now, "yyyy-mm-dd")
Text1 = "": Tc1 = ""
Tc2 = "": Tc3 = ""
Text5 = "": Text6 = ""
TextDTP = "": Combo1.Text = ""
Combo2.Text = "": Combo3.Text = ""
Text1.SetFocus
cmdok.Enabled = False: cmdCancel.Enabled = True
cmdUpdate.Enabled = False: cmdDelete.Enabled = False
Combo1.Visible = True: Adodc1.Enabled = False
cmdT.Enabled = True
i = 1
End Sub
●在“修改” 按钮的Click事件下添加如下代码:
Private Sub cmdUpdate_Click()
Unlockctl
i = 2
cmdok.Enabled = True: cmdCancel.Enabled = True
cmdAdd.Enabled = False: cmdDelete.Enabled = False
Adodc1.Enabled = False: Text1.Enabled = False
cmdT.Enabled = True
End Sub
●在“删除” 按钮的Click事件下添加如下代码:
Private Sub cmdDelete_Click()
If MsgBox("您确实要删除记录吗?", vbOKCancel, "系统提示") = vbOK Then
'adoCon.Execute ("delete from 车辆维修表 where 车牌号码='" & Text1 & "'")
On Error Resume Next
Adodc1.Recordset.Delete
MsgBox " 记录已删除!", , "系统提示"
Adodc1.Refresh
End If
End Sub
●在“确定” 按钮的Click事件下添加如下代码:
Private Sub cmdOk_Click()
Select Case i
Case 1
If Text1 = "" Then
MsgBox "车牌号码不能为空", , "系统提示"
Text1.SetFocus
Exit Sub
End If
adoCon.Execute ("insert into 车辆维修表 values ('" & Text1 & "','" & Combo1.Text & "','" & Tc1.Text & "','" & Combo2.Text & "','" & Tc2.Text & "','" & Combo3.Text & "','" & Tc3.Text & "','" & DTPicker1.Value & "','" & Text5.Text & "','" & Text6.Text & "')")
MsgBox "记录添加成功!", , "系统提示"
Adodc1.Refresh
Case 2
' adoCon.Execute ("update 车辆维修表 set 更换零件1='" & Combo1 & "',零件1数量='" & Tc1.Text & "',更换零件2='" & Combo2 & "',零件2数量='" & Tc2.Text & "',更换零件3='" & Combo3.Text & "', 零件3数量='" & Tc3.Text & "',维修日期='" & DTPicker1.Value & "',共计费用='" & Text5.Text & "',备注='" & Text6.Text & "' where 车牌号码='" & Text1 & "'")
On Error Resume Next
Adodc1.Recordset.Update
MsgBox "记录修改成功!", , "系统提示"
Adodc1.Refresh
End Select
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
cmdT.Enabled = False
End Sub
●在“取消” 按钮的Click事件下添加如下代码:
Private Sub cmdCancel_Click()
On Error Resume Next '当没有添加数据的时候 处理异常
Adodc1.Recordset.CancelUpdate
Adodc1.Refresh
Lockctl
cmdok.Enabled = False: cmdCancel.Enabled = False
cmdAdd.Enabled = True: cmdUpdate.Enabled = True
cmdDelete.Enabled = True: Adodc1.Enabled = True
cmdT.Enabled = False
End Sub
(7) 驾驶员奖罚
驾驶员奖罚主要是通过运营收入,运营次数,事故次数,违章次数,以及维修费用来综合评定的。统计运营,事故以及违章次数和运营收入,使用SQL中Count函数和SUM函数求出相关的次数和运营的总收入.
1 窗口界面设计
驾驶员奖罚窗口设计图
2程序代码设计
●在该窗口的Load事件下添加如下代码为:
Private Sub Form_Load()
frmDrJC.Width = 7875: frmDrJC.Height = 4080
Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""
Text5.Text = "": Text6.Text = "": Text7.Text = "": Text8.Text = ""
TName.Text = "": Text9.Text = ""
End Sub
●使用Count函数和SUM函数求出相关的次数和运营的总收入,在Text1控件的LostFocus事件下添加如下代码为:
Private Sub Text1_LostFocus()
Dim rss1 As New ADODB.Recordset
Set rss1 = adoCon.Execute("select * from 车辆异动表 where 车牌号码='" & Text1.Text & "'")
If rss1.EOF Then
Else
MsgBox "该车为异动车辆!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss1.Close
Dim rss2 As New ADODB.Recordset
Set rss2 = adoCon.Execute("select * from 车辆报废表 where 车牌号码='" & Text1.Text & "'")
If rss2.EOF Then
Else
MsgBox "该车已经报废!", , "系统提示"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
rss2.Close
If Text1.Text = "" Then Exit Sub
Text8.Text = Date
On Error Resume Next
AdoYY.RecordSource = "select * from 车辆运营表 where 车牌号码='" & Text1.Text & "'"
AdoYY.Refresh
If AdoYY.Recordset.RecordCount > 0 Then
Else
MsgBox "此车没有参加运营!", , "系统提示"
Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""
Text5.Text = "": Text6.Text = "": Text7.Text = "": Text8.Text = ""
TName.Text = "": Text9.Text = ""
Exit Sub
AdoYY.Recordset.Close
End If
AdoYY.RecordSource = "select sum(运营收入) as 收入,count(运营收入) as 次数 from 车辆运营表 where 车牌号码='" & Text1.Text & "'"
AdoYY.Refresh
Text2.Text = AdoYY.Recordset.Fields(0).Value
Text4.Text = AdoYY.Recordset.Fields(1).Value
AdoWX.RecordSource = "select sum(共计费用) as 费用 from 车辆维修表 where 车牌号码='" & Text1.Text & "'"
AdoWX.Refresh
Text3.Text = AdoWX.Recordset.Fields(0)
AdoSG.RecordSource = "select count(车牌号码) as 事故次数 from 车辆事故表 where 车牌号码='" & Text1.Text & "'"
AdoSG.Refresh
Text5.Text = AdoSG.Recordset.Fields(0)
AdoWZ.RecordSource = "select count(车牌号码) as 违章次数 from 车辆违章表 where 车牌号码='" & Text1.Text & "'"
AdoWZ.Refresh
Text6.Text = AdoWZ.Recordset.Fields(0)
If Val(tex4.Text) > 30 Then
Text7.Text = 10 - (Text5.Text * 10 + Text6.Text * 2 + (30 - Text4.Text) * 0.3)
Else '>=30次
Text7.Text = 10 - (Text5.Text * 10 + Text6.Text * 2)
End If
If Val(Text7.Text) > 0 Then
Text9.Text = ((Val(Text2.Text) * 0.2 - Val(Text3.Text) * 0.4) * Val(Text7.Text) * 0.1)
Else
Text9.Text = 0
End If
End Sub
●在”保存” 按钮的Click事件下添加如下代码:
Private Sub cmdSave_Click()
On Error Resume Next
AdoJF.Recordset.AddNew
AdoJF.Recordset.Fields("车牌号码") = Text1.Text
AdoJF.Recordset.Fields("姓名") = TName.Text
AdoJF.Recordset.Fields("运营收入") = Text2.Text
AdoJF.Recordset.Fields("运营次数") = Text4.Text
AdoJF.Recordset.Fields("维修费用") = Text3.Text
AdoJF.Recordset.Fields("违章次数") = Text6.Text
AdoJF.Recordset.Fields("事故次数") = Text5.Text
AdoJF.Recordset.Fields("日期") = Text8.Text
AdoJF.Recordset.Fields("每月得分") = Text7.Text
AdoJF.Recordset.Fields("每月奖金") = Text9.Text
AdoJF.Recordset.Update
Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""
Text5.Text = "": Text6.Text = "": Text7.Text = "": Text8.Text = ""
TName.Text = "": Text9.Text = ""
End Sub
●在”打印” 按钮的Click事件下添加如下代码:
Private Sub Cmdprint_Click()
DataReport1.Show
End Sub
第八章 数据库备份和恢复
在操作过程中,可能会因为操纵或者感染病毒而造成数据丢失,所以数据库备份是系统不可缺少的一个部分.系统中的数据备份使用了FileCopy语句:
FileCopy source, destination
参数说明:
Source:必要参数.字符串表达式,用来表示要复制的文件.
Destination: 必要参数. 字符串表达式, 用来指定要复制的目的文件名.
(1) 数据库备份设计
数据库备份设计图
●相关代码为:
(1) Private Sub cmdCopy_Click()
On Error Resume Next
FileCopy App.Path & "\\clgl.mdb", App.Path & "\数据库备份\clgl.mdb"
MsgBox "备份成功!", , "系统提示"
End Sub
(2)装载关闭:
Private Sub Form_Load()
frmDataCopy.Width = 50
frmDataCopy.Height = 2190
adoCon.Close
End Sub
(3)卸载打开:
Private Sub Form_Unload(Cancel As Integer)
Set adoCon = New ADODB.Connection
adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\clgl.mdb" & ";Persist Security Info=False"
End Sub
(2) 数据库恢复设计
数据库恢复设计图
●相关代码为:
Private Sub cmdHF_Click()
On Error Resume Next
FileCopy App.Path & "\数据库备份\clgl.mdb", App.Path & "\\clgl.mdb"
MsgBox "恢复成功!", , "系统提示"
End Sub
(2)装载关闭
Private Sub Form_Load()
frmDataHF.Width = 5040
frmDataHF.Height = 2235
adoCon.Close
End Sub
(3)卸载打开:
Private Sub cmdExit_Click()
MDIForm1.StatusBar1.Panels(1).Text = ""
Set adoCon = New ADODB.Connection
adoCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\clgl.mdb" & ";Persist Security Info=False"
Unload Me
End Sub
第九章 结束语
参考文献
(1)刘世峰 <<数据库基础与应用>>广播电视大学出版社
(2)刘世峰 《Visual Basic 程序设计》广播电视大学出版社
(3) 赛奎春 《Visual Basic 信息系统开发实例精选》机械工业出版社
