CHAPTER保险基金管理模块的设计9-1保险基金管理模块的总体设计9-2职工保险基金管理窗体结构设计9-3职工保险基金管理窗体程序代码设计9-4职工保险基金管理子模块应用示例9-5为保险基金管理自定义菜单命令和自定义命令按钮指定宏行政与人力资源管理应用案例详解职工保险基金管理是指对职工的各种社会保险和住房公积金的账号、费用进行基本管理。本章将详细介绍保险基金管理模块的制作方法和步骤。9-1保险基金管理模块的总体设计本章介绍的保险基金管理模块包括一个子模块,即“职工保险基金管理”。在这个模块中,将职工的各种社会保险和住房公积金的账号和费用进行统一管理。因此,保险基金管理模块或“职工保险基金管理”子模块是以一个名为“职工保险基金信息”的数据表为基础的。“职工保险基金信息”数据表所包含的字段信息如表9-1所示。表9-1“职工保险基金信息”数据表字段字段名称字段类型字段大小是否允许为空说明职工编号文本5否来源于“职工基本信息”数据表姓名文本10否来源于“职工基本信息”数据表性别文本1否来源于“职工基本信息”数据表所属部门文本10否来源于“职工基本信息”数据表养老保险号文本30否养老保险费数字单精度型否失业保险号文本30否失业保险费数字单精度型否医疗保险号文本30否医疗保险费数字单精度型否工伤保险号文本30否工伤保险费数字单精度型否生育保险号文本30否生育保险费数字单精度型否住房公积金号文本30否住房公积金费数字单精度型否备注文本50是“职工保险基金信息”数据表由系统自动创建,具体程序代码可参阅第2章的有关内容。“职工保险基金管理”子模块由一个“职工保险基金管理”主窗体、一个“按钮查询”子窗体和一个“职工信息输入”子窗体组成,其中“按钮查询”子窗体和“职工信息输入”子窗体在前面的章节中已经作了介绍,下面主要介绍“职工保险基金管理”主窗体的设计。9-2职工保险基金管理窗体结构设计326保险基金管理模块的设计9“职工保险基金管理”窗体的结构如图9-1所示,它与第8章介绍的“职工合同管理”窗体的结构大同小异。“职工保险基金管理”窗体由1个用户窗体、6个框架、16个标签、16个文本框、1个Spreadsheet控件和11个命令按钮组成。用户窗体及各个控件的功能及属性设置如下。图9-1“职工保险基金管理”主窗体结构(1)用户窗体:名称属性和Caption属性均设置为“职工保险基金管理”。(2)6个框架:它们用于将不同功能的控件组合在一起。其中4个框架的Caption属性分别设置为“保险基金信息”、“编辑记录”、“查询浏览记录”和“职工保险清单”;2个框架的Caption属性设置为空值,Height属性设置为3,并分别放置于标题为“保险基金信息”和“查询浏览记录”的框架内,用于将不同功能的控件分隔成组。(3)标题为“保险基金信息”框架内的控件:在此框架内,有16个标签和16个文本框,这些控件用于显示或输入职工保险基金信息。16个标签分别用于对16个文本框的功能进行说明,其Caption属性的设置情况如图9-1所示。16个文本框用于输入或显示职工保险基金信息,其功能说明及属性设置如表9-2所示。表9-2职工保险基金信息数据控件的功能说明和属性设置控件类型控件名称(名称属性)控件功能文本框职工编号显示或输入职工编号文本框姓名显示或输入职工姓名文本框性别显示或输入职工性别文本框所属部门显示或输入职工所属部门文本框养老保险号显示或输入养老保险号文本框养老保险费显示或输入养老保险费文本框失业保险号显示或输入失业保险号文本框失业保险费显示或输入失业保险费327行政与人力资源管理应用案例详解文本框医疗保险号显示或输入医疗保险号文本框医疗保险费显示或输入医疗保险费续上表控件类型控件名称(名称属性)控件功能文本框工伤保险号显示或输入工伤保险号文本框工伤保险费显示或输入工伤保险费文本框生育保险号显示或输入生育保险号文本框生育保险费显示或输入生育保险费文本框住房公积金号显示或输入住房公积金号文本框住房公积金费显示或输入住房公积金费文本框备注显示或输入备注文字(4)用户窗体上的11个命令按钮:分别完成保存、修改、查询浏览记录等功能,其功能说明和属性设置如表9-3所示。表9-3命令按钮的功能说明和属性设置名称属性Caption属性功能输入新数据输入新数据打开“职工信息输入”子窗体,准备输入新职工的保险基金信息保存保存保存保险基金信息记录更新更新更新保险基金信息记录删除删除删除保险基金信息记录查询查询启动一个查询窗口,查询保险基金信息记录重置窗口重置窗口刷新窗口第一条第一条浏览第一条记录下一条下一条浏览下一条记录上一条上一条浏览上一条记录最末条最末条浏览最末条记录退出退出系统关闭“职工保险基金管理”窗体(5)在Spreadsheet1控件的单元格A1中输入“职工编号”,合并单元格A1:A2;在单元格B1中输入“姓名”,合并单元格B1:B2;在单元格C1中输入“性别”,合并单元格C1:C2;在单元格D1中输入“所属部门”,合并单元格D1:D2;在单元格E1中输入“养老保险”,合并单元格E1:F1;在单元格G1中输入“失业保险”,合并单元格G1:H1;在单元格I1中输入“医疗保险”,合并单元格I1:J1;在单元格K1中输入“工伤保险”,合并单元格K1:L1;在单元格M1中输入“生育保险”,合并单元格M1:N1;在单元格O1中输入“住房公积金”,合并单元格O1:P1;在单元格E2中输入“保险号”,在单元格F2中输入“费用”,并将单元格E2和F2分别复制到单元格G2和H2、I2和J2、K2和L2、M2和N2;在单元格O2中输入“公积金号”,在单元格P2中输入“费用”。选取单元格区域A1:P2,加粗字体,并居中显示。9-3职工保险基金管理窗体程序代码设计328保险基金管理模块的设计9保险基金管理,就是以“人事管理.mdb”数据库中的“职工保险基金信息”数据表为基础,通过“保险基金管理”窗体及有关控件,完成职工的各种社会保险信息和住房公积金资料的添加、修改、删除、显示等功能。下面介绍“职工保险基金管理”主窗体及有关控件的事件程序代码。1.定义模块级变量首先定义下面的模块级变量,它们放在窗体对象程序代码窗口的顶部:DimcnnAsADODB.ConnectionDimrsInsuranceAsADODB.RecordsetDimmydataAsVariant2.为用户窗体设计Initialize事件程序为用户窗体设置Initialize事件,以便在启动“职工保险基金管理”窗体时,系统自动建立与数据库的连接,对有关的数据表进行查询,并设置某些控件的属性。“职工保险基金管理”窗体的Initialize事件程序代码如下:PrivateSubUserForm_Initialize()mySearchShow=False窗体显示的数据不是查询出的数据mydata=Array(职工编号,姓名,性别,所属部门,养老保险号,养老保险费,_失业保险号,失业保险费,医疗保险号,医疗保险费,工伤保险号,_工伤保险费,生育保险号,生育保险费,住房公积金号,住房公积金费)'建立与人事管理数据库的连接Setcnn=NewADODB.ConnectionWithcnn.Provider=microsoft.jet.oledb.4.0.OpenThisWorkbook.Path&\人事管理.mdbEndWithCall保险信息查询Call显示保险信息记录清单(rsInsurance)职工编号.Enabled=False:姓名.Enabled=False:性别.Enabled=False所属部门.Enabled=FalseEndSub3.为有关控件设计Change事件程序为了防止在有关的文本框和复合框中输入过长的数据,引起保存数据出现错误,应当对这些控件设置Change事件,以保证输入数据的长度不超过规定允许的长度。一些控件的Change事件程序代码如下:PrivateSub养老保险号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,养老保险号,养老保险号)EndSubPrivateSub失业保险号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,失业保险号,失业保险号)EndSubPrivateSub医疗保险号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,医疗保险号,医疗保险号)EndSubPrivateSub工伤保险号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,工伤保险号,工伤保险号)EndSubPrivateSub生育保险号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,生育保险号,生育保险号)EndSub329行政与人力资源管理应用案例详解PrivateSub住房公积金号_Change()CallTextBoxDataLength(cnn,职工保险基金信息,住房公积金号,住房公积金号)EndSub4.为“养老保险费”等6个文本框设计KeyPress事件为“养老保险费”等6个需要输入费用的文本框设计KeyPress事件,以控制用户只能输入输入0~9之间的数字和小数点,程序代码分别如下:PrivateSub养老保险费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:养老保险费SetFocusEndIfEndSubPrivateSub失业保险费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:失业保险费SetFocusEndIfEndSubPrivateSub医疗保险费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:医疗保险费SetFocusEndIfEndSubPrivateSub工伤保险费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:工伤保险费SetFocusEndIfEndSubPrivateSub生育保险费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:生育保险费SetFocusEndIfEndSubPrivateSub住房公积金费_KeyPress(ByValKeyAsciiAsMSForms.ReturnInteger)If(KeyAscii48OrKeyAscii57)AndKeyAscii46ThenKeyAscii=0:住房公积金费SetFocusEndIfEndSub5.为【输入新数据】按钮设计Click事件程序单击【输入新数据】按钮,系统将打开“职工信息输入”子窗体,以方便用户查找输入某职工的基本信息。在单击【输入新数据】按钮后,系统将检查数据库中是否已经存在了某个职工的保险基金信息记录。【输入新数据】按钮Click事件的程序代码如下:PrivateSub输入新数据_Click()OnErrorResumeNextCall清除保险窗口数据职工信息输入.Show职工编号.Value=Format(职工信息输入.Spreadsheet1.ActiveCell.Value,00000)姓