运输行业管理系统.ppt
运输行业管理系统,系 统 分 析,本系统的主要功能:记录司机的基本资料,包括姓名、身份证号等基本信息。并将司机的资料存入司机档案数据表DriverInfo,并可以对该表中的数据进行修改、删除及查询。记录车辆的基本信息,包括车号、隶属车队等基本信息。并将车辆的资料存入车辆档案数据表CarInfo中,并可以对该表进行修改、删除及查询。业务管理-运营业务记录管理,即维护WorkRec表,包括运行车辆ID、司机ID等属性,并可执行添加、修改、删除和查询等操作。业务管理-车辆维修记录管理,即维护RepairRec数据表,并可执行添加、修改、删除和查询等操作。业务管理-车辆违章记录关系,即维护PecRec数据表,并可执行添加、修改、删除和查询等操作。业务管理-车辆事故记录管理,即维护AccRec数据表,并可执行添加、修改、删除和查询等操作。每日自动结算 启动程序会自动弹出昨日结算窗口,提示昨日收支及盈利情况,该窗口也可在程序运行时调出。,系 统 设 计 思 想,运输行业管理系统,本例的运输行业管理系统应用于某运输且的数字化管理,实现运输企业管理的易操作、可维护性等。首先要求系统能够完整对司机档案和车辆档案的记录和查询等各种操作,为此,系统必须能够维护两个分别记录司机档案和车辆档案详细资料信息的数据表,能对该数据表进行写入和读取数据的操作。此外,系统还要求记录运输企业日常运营的各项业务,这样系统还需要维护域日常业务相关的车辆运营记录表、车辆维修记录表、车辆违章记录表和车辆事故记录表等。系统数据库访问的实现方式主要通过ADODC控件对数据库进行读、写和查询。,系统结构设计,运输行业管理系统,数据库,数据库需求分析,运输行业管理系统,用户可维护司机档案,进行添加、修改和删除操作,并能通过姓名、身份证号、性别、司机工号及备注等项目对司机档案进行查询。司机ID必须唯一。用户可对车辆档案进行添加、修改和删除操作,并能通过车号、车辆是否年检、是否有车险及备注等对车辆档案进行查询。车辆ID必须唯一。用户可对车辆运营记录进行添加、修改和删除操作,并能通过车辆ID,司机ID,运营日期及备注等对车辆运营记录进行查询。用户可对车辆维修记录进行查询、修改和删除操作,并能通过车辆ID,维修日期及备注等对车辆维修记录进行查询。用户可对车辆违章记录进行添加、修改和删除操作,并能通过车辆ID,司机ID,车辆违章日期及备注等对车辆违章记录进行查询。用户可对车辆事故记录进行添加、修改和删除操作,并通过车辆ID,司机ID、事故日期及备注等对车辆事故记录进行查询。上述数据中,车辆运营记录、车辆维修记录、车辆违章记录和车辆事故记录中的司机ID和车辆ID必须与司机档案中的司机ID,车辆档案中的车辆ID相关联。,数据库概念结构设计,运输行业管理系统,司机档案实体(司机档案ID,司机姓名,司机身份证号,司机性别,司机出生日期,司机工号,司机电话,隶属车队名,司机驾照号,驾照截止日期,备注),车辆档案实体(车辆档案ID,车号,隶属车队名,车辆购买日期,是否年检,是否车险,备注),运输行业管理系统,数据库概念结构设计,其余E-R图请见书P10P11,数据库逻辑结构设计,运输行业管理系统,司机档案数据表,运输行业管理系统,数据库逻辑结构设计,车辆档案数据表,其余表请见书P12P13,表之间的关系,运输行业管理系统,运输行业管理系统,数据库的连接,以Access数据库系统为例,连接数据库需要用到ADODC控件1 ADODC控件的添加 选择菜单命令【工程】【部件】,弹出“部件对话框”,选择Microsoft ADO Data Control 6.0(OLE DB),运输行业管理系统,数据库的连接,2 添加引用选择【工程】【引用】,在弹出的“引用”对话框中选择Microsoft ActiveX Data Object 2.0 library。,部件添加说明,ToolBar、ImageList:Microsoft Windows Common Controls 6.0,DTPicker:Microsoft Windows Common Controls-2 6.0,ADODC:Microsoft ADO Data Control 6.0(OLEDB),DataGrid:Microsoft DataGrid Control 6.0(OLEDB),SSTable:Microsoft Tabbed Dialog Control 6.0,Microsoft Axtivex Data Objects 2.0,引用添加说明,系统实施,运输行业管理系统,公共模块,1 新建工程 新建EXE工程,保存。2 添加Microsoft ADO Data Control 6.0部件和Microsoft ActiveX Data Object 2.0 library引用。3定义全局变量 添加公共模块,定义全局变量,用于数据库操作。Public DBCn As New ADODB.Connection Public CnStr As String ADODB.Connection,用于连接、打开数据库,界面设计,运输行业管理系统,1 设计欢迎界面,欢迎界面用于进行提示,用户单击进入系统。,欢迎界面属性及控件见书P18表1-7,运输行业管理系统,【工程】【添加窗体】,添加一个窗体,命令为FormLogin,设置其属性。需要说明:在窗体的Load事件中(1)App 对象是通过关键字 App 访问的全局对象。它指定如下信息:应用程序的标题、版本信息、可执行文件和帮助文件的路径及名称以及是否运行前一个应用程序的示例。(2)PrevInstance 属性返回一个值,该值指示是否已经有前一个应用程序实例在运行。语法:object.PrevInstance。object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。If App.PrevInstance Then MsgBox 您已经启动过了本程序!,运输行业管理系统 End End If(3)在LableEnter控件的单击事件中添加启动主窗体代码 Unload Me MDIFrm.Show,添加欢迎界面的过程,Private Sub Form_Load()If App.PrevInstance Then MsgBox 您已经启动过了本程序!,运输管理系统 End End IfEnd SubPrivate Sub Image1_Click()Unload Me MainFrm.ShowEnd Sub,2 系统主界面布局设计主界面主要包括菜单、工具栏和程序主窗口。有以下功能:调用各子窗口。关于界面。退出系统。【工程】【添加MDI窗体】,添加一个MDI窗体。工程中的MDI窗体时唯一的。添加了MDI窗体后,工程中的“添加MDI窗体”子菜单变为灰色不可用。窗体控件见P19 表1-8注意:添加ToolBar和ImageList之前,必须添加部件Microsoft Windows Common Controls6.0,界面设计,运输行业管理系统,3编辑主界面菜单【工具】-【菜单编辑器】,添加菜单 主界面菜单设置见书P19表1-94 系统主界面工具栏 编辑ImageList控件,添加图片,用户和工具栏上的各个按钮绑定。编辑Toolbar控件,添加按钮。按钮属性设置见P21表1-10,界面设计,运输行业管理系统,界面设计,运输行业管理系统,运输行业管理系统,系统主界面实现,Private Sub MDIForm_Load()设置数据库连接字符串 CnStr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Documents and SettingsAdministrator桌面信息系统分析与设计教学相关资料代码运输行业管理系统Transportation.mdb;Persist Security Info=False 连接数据库 DBCn.Open CnStr 日结算自动提示 FormBal.Show Me.WindowState=2窗体最大化End Sub,运输行业管理系统,系统主界面实现,添加响应菜单,Private Sub Ope_Acc_Man_Click()FromAcc.Show FromAcc.SSTab1.Tab=0 FromAcc.SetFocusEnd SubPrivate Sub Ope_Acc_Query_Click()FromAcc.Show FromAcc.SSTab1.Tab=1 FromAcc.SetFocusEnd SubPrivate Sub Ope_Pec_Man_Click()FromPec.Show FromPec.SSTab1.Tab=0 FromPec.SetFocusEnd Sub,运输行业管理系统,系统主界面实现,添加工具栏响应函数,Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Key 司机档案 Case“Key_Dri“此关键字即为设计工具栏按钮时指定的关键字 Call Dri_Man_Click 这个函数名称为菜单响应函数名,这样菜单操作和工具栏上的按钮操作就可以共享同一段代码 车辆档案 Case Key_Car Call Car_Man_Click 运营管理 Case Key_Work Call Ope_Work_Man_Click 维修记录 Case Key_Rep Call Ope_Rep_Man_Click End SelectEnd Sub,运输行业管理系统,司机档案管理模块,一、界面设计,控件详细信息见书P26 表1-11 注意窗体的MDIChild属性为True,TxtName,TxtNum,OptSex,DTPBir,TxtWorkNum,TxtRemark,TxtTel,TxtTeam,TxtLicenceNum,DTPLicDate,DataGrid1,运输行业管理系统,司机档案管理模块,部件添加说明,ToolBar、ImageList:Microsoft Windows Common Controls 6.0,DTPicker:Microsoft Windows Common Controls-2 6.0,ADODC:Microsoft ADO Data Control 6.0(OLEDB),DataGrid:Microsoft DataGrid Control 6.0(OLEDB),SSTable:Microsoft Tabbed Dialog Control 6.0,Microsoft Axtivex Data Objects 2.0,引用添加说明,运输行业管理系统,司机档案管理模块,司机档案查询界面设计,OptionButton,TextBox,运输行业管理系统,司机档案管理模块,ListView,OptQue,TxtQueName,TxtQueNum,OptQueSex,TxtQueWorkNum,TxtQueRemark,LvResult,运输行业管理系统,司机档案管理模块,司机档案表结构,在显示查询结果的ListView控件中添加上述给列,用于表示查询出来的信息分量的意义。,运输行业管理系统,司机档案管理模块,(1)右键点击ListView,选择属性,(2)点击插入列,(3)输入列标题,(4)指定列宽度,(5)重复上述步骤,将所有的列插入,运输行业管理系统,司机档案管理模块,在任何一个窗体或选项卡中,只能有一组单选钮,每次也只能选择界面上单选钮中的一个。要同时实现多组单选钮,可以采用Frame(框架)控件,将多组单选钮放在不同的框架中即可,在查询选项卡中,查询结果控件和其余的控件重叠,可以采用“置前”和“置后”命令对它进行调整,然后配合其Visible属性进行控制。,界面设计技巧,运输行业管理系统,司机档案管理模块,司机档案管理窗体初始化过程,初始化ADODC控件,连接数据库,设置列首 Adodc1.ConnectionString=CnStr 设置连接字符串 Adodc1.RecordSource=“Select DriverID as 司机ID,”&_设置数据集 DriverName as 姓名,&_ DriverNum as 身份证号,&_ DriverSex as 性别,&_ DriverBir as 出生日期,&_ DriverWorkNum as 工号,&_ DriverTel as 电话,&_ DriverTeam as 隶属车队,&_ DriverLicenceNum as 司机驾照号,&_ DriverLicenceDate as 驾照截止日期,&_ Remark as 备注&_ From DriverInfo Debug.Print Adodc1.RecordSource 将DataGrid控件与ADODC控件绑定 Set DataGrid1.DataSource=Adodc1,进入“司机档案”界面首先要对ADODC控件和DataGrid控件进行初始化,这部分代码在窗体的Load事件内实现。,Form_Load(),运输行业管理系统,司机档案管理模块,Private Sub DataGrid1_RowColChange(LastRow As Variant,ByVal LastCol As Integer)检验是否为空行 If DataGrid1.Columns(0).Text=“”Then DataGrid1.Columns(0)为司机ID Exit Sub End If 将DataGrid中数据读入各个控件显示数据内容=DataGrid1.Columns(1).Text=DataGrid1.Columns(2).Text If DataGrid1.Columns(3).Text=0 Then Me.OptSex(0).Value=True Else Me.OptSex(1).Value=True End If=DataGrid1.Columns(4).Text=DataGrid1.Columns(5).Text=DataGrid1.Columns(6).Text=DataGrid1.Columns(7).Text=DataGrid1.Columns(8).Text=DataGrid1.Columns(9).Text=DataGrid1.Columns(10).Text End Sub,运输行业管理系统,司机档案管理模块,添加司机档案,点击添加,运输行业管理系统,司机档案管理模块,添加司机档案,1 检查输入信息是否正确,2 根据输入信息构造SQL语句,3 执行SQL语句,没有输入司机姓名 If)=0 Then MsgBox 请输入司机姓名!,添加司机档案 Exit Sub End If,运输行业管理系统,司机档案管理模块,检查输入信息是否正确(P31),String.trimClass Overview|Class Members|This Package|All Packages Syntaxpublic String trim()Returnsthis string,with white space removed from the front and end.DescriptionRemoves white space from both ends of this string.,Len()返回 Long,其中包含字符串内字符的数目,输入司机姓名不正确 If)4 Then MsgBox“输入司机姓名不正确!,添加司机档案 Exit Sub End If,运输行业管理系统,司机档案管理模块,检查输入信息是否正确,SqlStr=INSERT INTO DriverInfo SqlStr=SqlStr,运输行业管理系统,司机档案管理模块,DBCn.Execute SqlStr 执行SQL语句,构造SQL语句,运输行业管理系统,司机档案管理模块,在执行SQL语句时,对字符串的引用都要用左右两个单引号分割,而程序会把字符串中的单引号看做是SQL语句的分隔符来处理,如果字符串中含有单引号,需要用两个单引号来代替一个单引号,可以用Replace()函数来替换。,Remark=),”,”),Private Sub CmdAdd_Click()Dim DriverSex As IntegerDim rsAdd As New ADODB.RecordsetDim SqlStr As StringDim Remark As String 首先检验输入 没有输入司机姓名 If)4 Then MsgBox 输入司机姓名不正确!,添加司机档案 Exit Sub End If 没有输入身份证号 If)18 Then MsgBox 身份证号不正确,请输入18位身份证号!,添加司机档案 Exit Sub End If,没有选择司机性别 If Me.OptSex(0).Value=False And Me.OptSex(1).Value=False Then MsgBox 请选择司机性别!,添加司机档案 Exit Sub End If 没有输入司机工号 If)11 Then MsgBox 输入的电话不正确,请输入11位电话号码!,添加司机档案 Exit Sub End If 没有输入隶属车队名 If)=0 Then MsgBox 请输入隶属车队名!,添加司机档案 Exit Sub End If,没有输入司机驾照号 If)=0 Then MsgBox 请输入司机驾照号!,添加司机档案 Exit Sub End If 检验完毕,数据入库 If Me.OptSex(0).Value=True Then DriverSex=0 Else DriverSex=-1 End If,备注项可选 If=vbNullString Then 没有备注项 SqlStr=INSERT INTO DriverInfo SqlStr=SqlStr Debug.Print SqlStr DBCn.Execute SqlStr,Else 有备注项 Remark=),)SqlStr=INSERT INTO DriverInfo SqlStr=SqlStr Debug.Print SqlStr DBCn.Execute SqlStr End If,MsgBox 添加成功,添加司机档案 Adodc1.Refresh,End Sub,清空按钮Private Sub CmdEmpty_Click()=Me.OptSex(0).Value=False Me.OptSex(1).Value=False=2000-1-1=2008-1-1=End Sub,运输行业管理系统,司机档案管理模块,用户选中DataGrid列表中某一项时,系统会自动将该项内容显示在司机档案管理选项卡中,单击修改,,DataGrid控件与ADODC控件绑定,从而与司机档案数据表DriverInfo中的数据相关联,将自动对该表中的数据进行修改。,司机档案修改,程序需要检验各个项目是否正确,若无错误,将修改后的记录替换DataGrid列表中的原始数据。,Private Sub CmdMod_Click()DataGrid1.Columns(1).Text=DataGrid1.Columns(2).Text=If Me.OptSex(0).Value=True Then DataGrid1.Columns(3).Text=0 Else DataGrid1.Columns(3).Text=-1 End If DataGrid1.Columns(4).Text=DataGrid1.Columns(5).Text=DataGrid1.Columns(6).Text=DataGrid1.Columns(7).Text=DataGrid1.Columns(8).Text=DataGrid1.Columns(9).Text=DataGrid1.Columns(10).Text=MsgBox 修改成功,修改司机档案 End Sub,运输行业管理系统,司机档案管理模块,修改按钮代码,运输行业管理系统,司机档案管理模块,删除司机档案,Private Sub CmdDel_Click()On Error GoTo ERR:If MsgBox(确定要删除选定档案吗?,vbOKCancel,删除档案)=vbOK Then MsgBox 删除成功!,删除档案 CmdEmpty_Click End If Exit SubERR:MsgBox 其他表包含相关记录,不能删除,删除档案End Sub,错误处理标记,删除当前记录,运输行业管理系统,司机档案查询模块,司机档案查询,用户选择司机档案查询选项卡,选择查询类型,填写查询内容后,单击【查询】按钮。程序首先检验查询内容填写是否正确,然后生成SQL语句对数据库进行查询,再将查询结果显示在LvResult(ListView控件)中。,输入查询条件,点击查询,OptQue,OptQueSex,姓名,1000.06,Width,身份证号,1800.00,性别,799.93,出生日期,1440.00,工号,1440.00,电话(手机),1440.00,隶属车队名,1440.00,司机驾照号,1440.00,驾照截止日期,1440.00,备注,1440.00,Width,Width,Width,Width,Width,Width,Width,Width,Width,运输行业管理系统,司机档案查询模块,按姓名查询 If Me.OptQue(0).Value=True Then 判断查询条件 If=Then MsgBox 请输入要查询的司机姓名!,查询司机档案 Exit Sub ElseIf)4 Then MsgBox 司机姓名长度超出范围!,查询司机档案 Exit Sub End If生成查询语句 Questr=select*from DriverInfo where DriverName Like%&DriverName&%,Dim RsQuery As New ADODB.Recordset 结果集对象,司机档案查询部分代码(P36),RsQuery.Open Questr,DBCn,adOpenStatic,adLockOptimistic 显示查询结果 If RsQuery.EOF Then MsgBox 数据库中没有符合要求的记录!,查询司机档案 Exit Sub End If,打开数据集,运输行业管理系统,司机档案查询模块,adOpenStatic 向前游标,adOpenKeyset 键集游标 adLockOptimistic设置窗口为固定的大小,RsQuery.MoveFirst数据集指针指向第一个记录RsQuery.REcordCount数据集中记录的个数RsQuery.MoveNext数据集指向下一条记录,查询串,连接对象,中参数的用法 Recordset对象的Open方法原型:Open(Source,ActiveConnection,CursorType,LockType,Options)CursorType游标类型:Const adOpenForwardOnly=0 前向游标,为缺省游标,提供最快的运行性能。用它打开recordset,从对至尾顺序取得所有结果。它不支持向后滚动,只允许在结果间单向移动。Const adOpenKeyset=1 静态游标,反映第一次打开游标时表中数据的状态,游标无法查明底层表中的数据行是否更新过、删除过或添加了新的数据。不过与只能前移的洲标不同,静态游标可以在结果间前后滚动。Const adOpenDynamic=2 键盘驱动的游标,可以查询表中底层数据行的某些变化,但不是全部。它特别是可以准确反映数据是否更新过。但它不能查明其它用户是否曾删除过数据行(删除掉的数据行在recordset中会留下空洞)。键盘驱动的游标支持在结果间前后滚动。Const adOpenStatic=3 动态游标,是最丰富的游标类型。游标打开时可以查询其他用户对表的任何改动,而且支持滚动。,LockType加锁类型:Const adLockReadOnly=1 缺省的上锁类型,只读方式上锁允许多个用户同时读取同样的数据,但不能改变数据。Const adLockPessimistic=2 以悲观上锁方式打开数据对象。该方式假定在你编辑记录时会有其它用户访问数据。此时一旦你开始编辑记录,其它用户就不能访问该数据。Const adLockOptimistic=3 以乐观上锁方式打开数据对象。该方式假定在你编辑记录时不会有其它用户访问数据。在完成改变之前,其它用户不能访问该记录。Const adLockBatchOptimistic=4 执行多行批处理更新时使用这种类型Options参数:Options参数标明用来打开记录集的命令字符串的类型。告诉ADO被执行的字符串内容的有关信息有助于高效地执行该命令字符串。adCMDTable。被执行的字符串包含一个表的名字。adCMDText。被执行的字符串包含一个命令文本。adCMDStoredProc。被执行的字符串包含一个存储过程名。adCMDUnknown。不指定字符串的内容。(这是缺省值。),RS.OPEN SQL,CONN,A,B A:ADOPENFORWARDONLY(=0)只读,且当前数据记录只能向下移动 ADOPENSTATIC(=3)只读,当前数据记录可自由移动 ADOPENKEYSET(=1)可读写,当前数据记录可自由移动 ADOPENDYNAMIC(=2)可读写,当前数据记录可自由移动,可看到新增记录B:ADLOCKREADONLY(=1)默认值,用来打开只读记录 ADLOCKPESSIMISTIC(=2)悲观锁定 ADLOCKOPTIMISTIC(=3)乐观锁定 ADLOCKBATCHOPTIMISTIC(=4)批次乐观锁定,司机档案查询,运输行业管理系统,司机档案查询模块,查询按钮Private Sub CmdQue_Click()Dim Questr As StringDim RsQuery As New ADODB.RecordsetDim DriverName As StringDim Remark As StringDim LtItm As ListItemDim i As Integer 按姓名查询 If Me.OptQue(0).Value=True Then 判断查询条件 If=Then MsgBox 请输入要查询的司机姓名!,查询司机档案 Exit Sub ElseIf)4 Then MsgBox 司机姓名长度超出范围!,查询司机档案 Exit Sub End If 替换单引号 DriverName=),)生成查询语句 Questr=select*from DriverInfo where DriverName Like%&DriverName&%,Private Sub Form_Load()LvResult.Visible=FalseEnd Sub,按身份证号查询 ElseIf Me.OptQue(1).Value=True Then 判断查询条件 If=Then MsgBox 请输入要查询的身份证号!,查询司机档案 Exit Sub ElseIf)18 Then MsgBox 身份证号长度不符!,查询司机档案 Exit Sub End If 生成查询语句 Questr=select*from DriverInfo where DriverNum Like%Questr=Questr&%按性别查询 ElseIf Me.OptQue(2).Value=True Then 生成查询语句 If Me.OptQueSex(0).Value=True Then Questr=select*from DriverInfo where DriverSex=0 Else Questr=select*from DriverInfo where DriverSex=-1 End If 按工号查询 ElseIf Me.OptQue(3).Value=True Then Questr=select*from DriverInfo where DriverWorkNum=Questr=Questr&),按备注查询 ElseIf Me.OptQue(4).Value=True Then 替换单引号 Remark=),)生成查询语句 Questr=select*from DriverInfo where Remark Like%Questr=Questr&Remark&%End If,打开数据集 Debug.Print Questr RsQuery.Open Questr,DBCn,adOpenStatic,adLockOptimistic 显示查询结果 If RsQuery.EOF Then MsgBox 数据库中没有符合要求的记录!,查询司机档案 Exit Sub End If=True=True,清空列表 数据集指针指向第一个记录 RsQuery.MoveFirst For i=1 To RsQuery.RecordCount Set LtItm=()LtItm.Text=RsQuery.Fields(DriverID).Value LtItm.SubItems(1)=RsQuery.Fields(DriverName).Value LtItm.SubItems(2)=RsQuery.Fields(DriverNum).Value If RsQuery.Fields(DriverSex).Value=0 Then LtItm.SubItems(3)=男 Else LtItm.SubItems(3)=女 End If LtItm.SubItems(4)=RsQuery.Fields(DriverBir).Value LtItm.SubItems(5)=RsQuery.Fields(DriverWorkNum).Value LtItm.SubItems(6)=RsQuery.Fields(DriverTel).Value LtItm.SubItems(7)=RsQuery.Fields(DriverTeam).Value LtItm.SubItems(8)=RsQuery.Fields(DriverLicenceNum).Value LtItm.SubItems(9)=RsQuery.Fields(DriverLicenceDate).Value If RsQuery.Fields(Remark).Value Then LtItm.SubItems(10)=RsQuery.Fields(Remark).Value End If 数据集指针指向下一条记录 RsQuery.MoveNext Next i 关闭数据集 RsQuery.Close End Sub,运输行业管理系统,车辆档案管理模块,FormCar BorderStype 1 MDIChild TRUETxtCarNum:车号 TxtTeam、:隶属车队DTPBuy:购买日期TxtRemark:备注OptCheck(0):是否年检 是OptCheck(1):是否年检 否OptIns(0):是否车险 是OptIns(1):是否车险 否DataGrid1:Adodc1:OptQue(0):按车号查询OptQue(1):按是否年检查询OptQue(2):按是否车险查询OptQue(3):按备注查询OptQueCheck(0):是否车险 是OptQueCheck(1):是否车险 否OptQueIns(0):是否年检 是OptQueIns(0):是否年检 否LvResult:,车辆档案管理窗体控件,运输行业管理系统,车辆档案管理模块,Private Sub Form_Load()初始化ADO控件,连接数据库,设置列首 Adodc1.ConnectionString=CnStr Adodc1.RecordSource=Select CarID as 车辆ID,&_ CarNum as 车号,&_ CarTeam as 隶属车队名,&_ CarDate as 购买日期,&_ CarCheck as 年检,&_ CarIns as 车险,&_ Remark as 备注&_ From CarInfo Debug.Print Adodc1.RecordSource Set DataGrid1.DataSource=Adodc1 不能缺少=FalseEnd Sub,运输行业管理系统,车辆档案管理模块,备注项可选 If=vbNullString Then 没有备注项 SqlStr=INSERT INTO CarInfo SqlStr=SqlStr Debug.Print SqlStr DBCn.Execute SqlStr,Else 有备注项 Remark=),)SqlStr=INSERT INTO CarInfo SqlStr=SqlStr Debug.Print SqlStr DBCn.Execute SqlStr End If MsgBox 添加成功,添加车辆档案 Adodc1.Refresh,Private Sub CmdMod_Click()DataGrid1.Columns(1).Text=DataGrid1.Columns(2).Text=DataGrid1.Columns(3).Text=If Me.OptCheck(0).Value=True Then DataGrid1.Columns(4).Text=0 Else DataGrid1.Columns(4).Text=-1 End If If Me.OptIns(0).Value=True Then DataGrid1.Columns(5).Text=0 Else DataGrid1.Columns(5).Text=-1 End If DataGrid1.Columns(6).Text=MsgBox 修改成功,修改车辆档案End Sub,修改车辆档案,运输行业管理系统,Private Sub CmdDel_Click()On Error GoTo Err:If MsgBox(确定要删除选定档案吗?,vbOKCancel,删除档案)=vbOK Then MsgBox 删除成功!,删除档案 CmdEmpty_Click End If Exit SubErr:MsgBox 其他表中包含相关记录,不能删除!,删除档案End Sub,删除车辆档案,运输行业管理系统,每日结算模块,运输行业管理系统,控件即属性见书P47表1-13,计算盈利:昨日收入(车辆运营)-昨日支出(违章罚款+维修费用+事故花费),