您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > EXCEL VBA行政与人力资源管理应用案例详解 第4章
CHAPTER基本设置模块的设计4-1部门设置子模块设计4-2其他基础设置子模块的设计4-3其他基础设置子模块应用示例行政与人力资源管理应用案例详解基本设置模块包括“部门设置”、“职位设置”、“职务设置”、“职称设置”、“文化程度设置”、“职工类别设置”、“工作地点设置”和“合同类别设置”等基本子模块,分别用于对部门、职位、职务、职称、文化程度、职工类别、工作地点和合同类别等项目进行设置。设立基本设置模块的目的,是为了方便输入数据和查询数据,提高工作效率。4-1部门设置子模块设计部门设置子模块的功能,就是以数据库“人事管理.mdb”中的“部门设置”数据表为基础,通过“部门设置管理”窗体及有关控件,从而完成部门及其负责人的添加、修改、删除、保存、查询及显示等基本功能,以及当部门名称改变后对其他所有数据表中的部门名称进行统一修改。本节介绍部门设置子模块的设计方法和步骤。4-1-1部门设置数据表的设计“部门设置”数据表有2个字段:部门名称和部门负责人,它们都是文本型数据,字段大小都是10个字符。“部门设置”数据表由系统自动创建,具体的程序代码可参阅第2章的有关内容。4-1-2部门设置管理窗体的结构设计“部门设置管理”窗体结构如图4-1所示。它是由1个用户窗体、4个框架、1个列表框、5个标签、5个文本框、6个命令按钮组成。用户窗体及各个控件的功能及属性设置说明如表4-1所示。图4-1“部门设置管理”窗体结构表4-1用户窗体及各个控件的功能及属性设置说明控件名称Caption属性功能用户窗体部门设置管理部门设置管理框架Frame1空值框架Frame2部门名称及负责人列表显示150基本设置模块的设计4框架Frame3部门名称及负责人编辑框架Frame4统一修改所有数据表部门名称续上表控件名称Caption属性功能列表框ListBox1显示或选择部门标签Label1部门总数:对文本框进行说明标签Label2部门名称:对文本框进行说明标签Label3部门负责人:对文本框进行说明标签Label4原名称:对文本框进行说明标签Label5新名称:对文本框进行说明文本框部门总数显示部门总数文本框部门_名称显示或输入部门名称文本框部门_负责人显示或输入部门负责人文本框部门_原名称显示或输入部门原名称文本框部门_新名称显示或输入部门新名称命令按钮部门_添加添加添加部门命令按钮部门_修改修改修改部门名称命令按钮部门_删除删除删除部门命令按钮部门_统一修改统一修改对所有数据表中的部门名称进行修改命令按钮部门_查看数据库查看数据库打开人事管理数据库部门设置数据表命令按钮部门_退出退出系统关闭窗体4-1-3程序代码设计1.定义模块级变量首先定义下面两个模块级变量,它们放在窗体对象程序代码窗口的顶部:DimcnnBaseAsADODB.Connection'定义Connection对象变量DimrsDepartmentAsADODB.Recordset'定义Recordset对象变量2.为“部门设置管理”窗体设计Initialize事件程序为“部门设置管理”窗体设置Initialize事件,以便在启动“部门设置管理”窗体时,系统自动建立与“人事管理.mdb”数据库的连接,并对数据表“部门设置”进行查询,将部门信息显示在列表框和文本框中。“部门设置管理”窗体的Initialize事件的程序代码如下:PrivateSubUserForm_Initialize()'建立与人事管理数据库的连接SetcnnBase=NewADODB.ConnectionWithcnnBase.Provider=microsoft.jet.oledb.4.0.OpenThisWorkbook.Path&\人事管理.mdbEndWith151行政与人力资源管理应用案例详解Call显示部门设置数据'查询数据表部门设置,并将查询结果设置为列表框项目EndSub3.为列表框设计Change事件程序为列表框设计Change事件程序的目的,是为了方便用户查看记录。当用户单击列表框中的某个部门时,该部门的名称及负责人名字就自动显示在有关的文本框中。列表框的Change事件程序代码如下:PrivateSubListBox1_Change()OnErrorResumeNext部门_名称.Value=ListBox1.Value部门_原名称.Value=ListBox1.Value部门_负责人.Value=ListBox1.List(ListBox1.ListIndex,1)EndSub4.为部门名称、部门负责人和部门新名称3个文本框设计Change事件程序由于数据库对部门名称、部门负责人和部门新名称的字段长度限制为10个字符,为了防止输入的字符长度超过允许的长度,可以为这3个文本框设计Change事件程序,以控制用户输入的字符长度。考虑到此人力资源管理系统有很多窗体的文本框都要设置Change事件,因此可以把判断控制文本框字符长度的程序代码写成一个子程序。文本框字符判断控制子程序的名为“TextBoxDataLength”,它是一个带参数的子程序,其程序代码如下所示,它保存在一个名为“公共子程序和自定义函数”的标准模块中:PublicSubTextBoxDataLength(myCnnAsADODB.Connection,myTableAsString,myFieldNameAsString,myTextBoxAsMSForms.TextBox)'myCnn为数据库连接对象变量,myRs为数据库查询数据集变量'myTable为查询的数据表,myFieldName为字段名称,myTextBox为文本框名称DimmyDefineSizeAsInteger,mysqlAsStringDimmyRsAsADODB.Recordset'对数据表myTable进行查询,以便获得某字段的长度mysql=select*from&myTableSetmyRs=NewADODB.RecordsetmyRs.Openmysql,myCnn,adOpenKeyset,adLockOptimisticmyDefineSize=myRs.Fields(myFieldName).DefinedSize'获得某字段的长度IfLen(myTextBox.Value)myDefineSizeThenMsgBox字段“&myRs.Fields(myFieldName).Name_&”的长度已经超过了&myDefineSize&个字符!,_vbCritical+vbOKOnly,警告myTextBox.Value=Left(myTextBox.Value,myDefineSize)myTextBox.SetFocusEndIfSetmyRs=NothingEndSub这样,部门名称、部门负责人和部门新名称这3个文本框的Change事件程序程序代码分别如下所示:PrivateSub部门_名称_Change()CallTextBoxDataLength(cnnBase,部门设置,部门名称,部门_名称)EndSubPrivateSub部门_负责人_Change()CallTextBoxDataLength(cnnBase,部门设置,部门负责人,部门_负责人)152基本设置模块的设计4EndSubPrivateSub部门_新名称_Change()CallTextBoxDataLength(cnnBase,部门设置,部门名称,部门_新名称)部门_名称.Value=部门_新名称.ValueEndSub5.为【添加】按钮设计Click事件程序在文本框中输入部门名称和部门负责人名字后,单击【添加】按钮,就将输入的部门名称和部门负责人名字数据添加到数据表“部门设置”中。【添加】按钮的Click事件程序代码如下:PrivateSub部门_添加_Click()OnErrorGoTohhhIfTextBoxDataIsBlank(部门_名称,部门名称)=TrueThenExitSubIfTextBoxDataIsBlank(部门_负责人,部门负责人)=TrueThenExitSub'将当前记录位置移动到记录集中的第一个记录IfrsDepartment.BOF=FalseThenrsDepartment.MoveFirst'判断记录集中是否已经存在了某个部门Fori=1TorsDepartment.RecordCountIfrsDepartment.Fields(0)=部门_名称.ValueThen'弹出信息框,以提醒用户MsgBox在数据库中已经存在一个名称为_&部门_名称.Value&的部门!&vbCrLf&vbCrLf_&请重新输入部门名称!,vbExclamation,注意部门_名称.Value=:部门_名称.SetFocus:ExitSubEndIfrsDepartment.MoveNext'当前记录位置向前移动一个记录NextirsDepartment.AddNew'使用记录集的AddNew方法添加记录rsDepartment.Fields(部门名称)=部门_名称.ValuersDepartment.Fields(部门负责人)=部门_负责人.ValuersDepartment.Update'使用记录集的Update方法刷新记录集rsDepartment.MoveFirst'将当前记录位置移动到记录集中的第一个记录Call显示部门设置数据'调用子程序显示部门设置数据,刷新窗口显示'将文本框数据清除,准备添加新的记录部门_名称.Value=:部门_负责人.Value=:部门_名称.SetFocus:ExitSubhhh:MsgBox保存数据出现错误!&vbCrLf&vbCrLf&错误为:&Err.DescriptionEndSub在程序中,调用了一个判断文本框是否输入了数据的自定义函数“TextBoxDataIsBlank”,其返回值为True或False,如果文本框中没有输入数据,其返回True,否则返回False。这个自定义函数保存在一个名为“公共子程序和自定义函数”的标准模块中,其程序代码如下:PublicFunctionTextBoxDataIsBlank(myTextBoxAsMSForms.TextBox,myTextAsString)AsBooleanTextBoxDataIsBlank=FalseIfmyTextBox.Value=ThenTextBoxDataIsBlank=TrueMsgBoxmyText&不能为空!请输入数据!,vbCritical,警告myTextBox.SetFocusEndIfEndFunction153行政与人力资源管理应用案例详解6.为【修改】按钮设计Click事件程序如果输入了错误的部门名称或负责人名字,或者企业的部门名称更改了,或者某个部门的负责人更换了,则可以单击列表框中的某个需要更改部门名称或负责人的项目,然后在部门名称或部门负责人文本框中输入正确的或新的部门名称或负责人,再单击【修改】按钮,对数据库数据进行修改更新。【修改】按钮的Click事件程序代码如下:PrivateSub部门_修改_Click()OnErrorResumeNext'将当前记录位置移动到记录集中的第一个记录IfrsDepartment.BOF=FalseThenrsDepartment.MoveFirst'判断记录集中是否已经存在了某个部门Fori=1TorsDepartment.RecordCountIfrsDepartment.Fields(部门名称)=部门_名称.ValueThen'弹出信息框,以提醒用户MsgBox在数据库中已经存在一个名称为_&部门_名称.Value&的部门!&vbCrLf&vbCrLf_&只能修改部门负责人!,vbExclamation,注意'若部门名称与原来相同,就仍采用原来的部门名称部门_名称.Value=rsDepartment.Fields(部门名称)EndIfrsDepar
本文标题:EXCEL VBA行政与人力资源管理应用案例详解 第4章
链接地址:https://www.777doc.com/doc-950229 .html