版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE PAGE 56“人力资源管理系统”项目开发实训说明一 项目开发实训进度说明2学时课要完成的任务:完成主界面的设计;数据库类DataBase的定义和使用;登陆界面的设计1)主界面设计如图2)数据库类Database的定义和使用说明:因为各个窗体均需要对数据库进行访问,可以把对数据库的一些操作通过一个类来实现,这样可以使对数据库的访问更加简单。类的定义请参考相应截图和代码类的定义Imports System.DataImports System.Data.OleDbImportsSystem.ComponentModelPublicClass DataBaseImplements IDi
2、sposable 实现接口IDisposable,主要用来“显示释放资源”Private OledbConn As OleDbConnection 数据库连接对象Private trans As OleDbTransaction 事务处理对象Dim OledbComm As OleDbCommandPublicShared sConn AsString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=hrmbook.mdb;Persist Security Info=FalsePrivate disposedValue AsBoolean = Fa
3、lse 检测冗余的调用ProtectedOverridableSub Dispose(ByVal disposing AsBoolean)IfNotMe.disposedValue ThenIf disposing Then TODO: 显式调用时释放非托管资源If OledbConn IsNothing = FalseThen OledbConn.Dispose() OledbConn = NothingEndIfEndIf TODO: 释放共享的非托管资源EndIfMe.disposedValue = True本部分代码自动添加的EndSub本部分代码自动添加的#Region IDispo
4、sable Support Visual Basic 添加此代码是为了正确实现可处置模式。PublicSub Dispose() Implements IDisposable.Dispose 不要更改此代码。请将清理代码放入上面的 Dispose(ByVal disposing As Boolean) 中。 Dispose(True) GC.SuppressFinalize(Me)EndSub#EndRegionPublicSub Open()If OledbConn IsNothing = TrueThen建立数据库连接对象 OledbConn = New OleDbConnection(s
5、Conn) me.sConn打开数据库连接 OledbConn.Open()EndIfEndSubPublicSub Close()如果数据库连接对象不为空则关闭数据库连接If OledbConn IsNothing = FalseThen OledbConn.Close()EndIfEndSubPublicFunction RunSelectSQL(ByVal sSQLString As System.String) As DataView本过程的功能:对数据库的操作【按条件选择合适的记录】Me.Open()Dim OledbDS As DataSet = New DataSetDim Ol
6、edbDA As OleDbDataAdapter = New OleDbDataAdapter(sSQLString, Me.OledbConn) OledbDA.Fill(OledbDS)Return OledbDS.Tables(0).DefaultViewEndFunctionPublicSub RunDelOrInsSQL(ByVal sSQLString As System.String)本过程的功能:对数据库的操作【执行删除或插入操作】Me.Open()Dim OledbComm As OleDbCommand = New OleDbCommand(sSQLString,Me.O
7、ledbConn) OledbComm.ExecuteNonQuery()EndSubPublicSub RunMulDelOrInsSQL(ByVal arr As ArrayList)本过程的功能:对数据库的操作【批量的执行删除或插入操作,用到了事物处理的作用】Me.Open() trans = OledbConn.BeginTransactionDim i AsIntegerTryFor i = 0 To arr.Count - 1 OledbComm = New OleDbCommand(arr(i), Me.OledbConn) OledbComm.Transaction = tra
8、ns OledbComm.ExecuteNonQuery()Next i trans.Commit()Catch ex As Exception trans.Rollback()ThrowNew ExceptionEndTryEndSubPublicFunction getResult(ByVal strSql AsString) As OleDbDataReader本过程的功能:对数据库的操作【按条件读出合适的记录】Me.Open() OledbComm = New OleDbCommand(strSql, Me.OledbConn)Dim dr As OleDbDataReader = O
9、ledbComm.ExecuteReader()Return drEndFunctionEndClassDataBase类截图DataBase类截图DataBase类截图DataBase类截图事务是作为包执行的一组数据库命令。利用事务,您的应用程序将能够在事务进程中的任何部分出现任何错误时中止(回滚)所有已在事务中执行的更改。例如,假设某个应用程序具有两个表,其中一个表示库存清单,而另一个表示订单。当向一个表添加订单时,需要在另一个表中减少相应的库存。如果对订单表的更新成功但对库存清单表的更新失败,则将损坏数据的完整性。为了确保两个表都成功进行更新,可以将两个数据命令都打包到一个事务中。如果一
10、个表成功更新而另一个表未成功更新,则可以回滚整个事务,解决导致失败的问题,然后重试该事务。3)登陆界面设计及相应代码附主界面代码以及代码截图:(要把启动对象设置为Sub Main)PublicClass frmMainPublicSharedSubMain()Dim frml AsNew frmLogin frml.ShowDialog() 先显示登陆界面窗体,用户编号,密码等信息正确才允许显示主界面If frml.bResult ThenDim fm AsNew frmMain fm.ShowDialog()EndIfEndSubPrivateFunction GetInstanceStat
11、e(ByVal name AsString) AsBoolean本过程功能是判断某子窗体是否已存在Dim i AsInteger = Me.MdiChildren.LengthFor i = 0 ToMe.MdiChildren.Length - 1IfMe.MdiChildren(i).Name = name ThenMe.MdiChildren(i).Focus()ReturnTrueEndIfNextReturnFalseEndFunction“机构编制管理(&X)”菜单下的三子菜单1)“机构设置及编码”对应菜单的Name属性值:机构设置及编码ToolStripMenuItem2)“机构
12、详细信息”对应菜单的Name属性值:机构详细信息ToolStripMenuItem3)“退出”对应菜单的Name属性值:退出ToolStripMenuItemPrivateSub机构设置及编码ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles机构设置及编码ToolStripMenuItem.ClickIf GetInstanceState(frmDepManage) ThenExitSubEndIf frmDepManage.MdiParent = MefrmDe
13、pManage是“机构设置及编码”模块窗体的Name属性值 frmDepManage.Show()EndSubPrivateSub机构详细信息ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles机构详细信息ToolStripMenuItem.ClickIf GetInstanceState(frmDepInfo) ThenExitSubEndIfDim childFrm AsNew frmDepInfo frmDepInfo是“机构详细信息”模块窗体的Name属性值
14、 childFrm.MdiParent = Me childFrm.Show()EndSubPrivateSub退出ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles退出ToolStripMenuItem.Click Application.Exit()EndSub“人员信息管理(&Y)”菜单下的二子菜单1)“职员信息维护”对应菜单的Name属性值:职员信息维护ToolStripMenuItem2)“职员信息查询”对应菜单的Name属性值:职员信息查询ToolSt
15、ripMenuItemPrivateSub职员信息维护ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles职员信息维护ToolStripMenuItem.ClickIf GetInstanceState(frmPeopleManage) ThenExitSubEndIfDim childFrm AsNew frmPeopleManage frmPeopleManage是“职员信息维护”模块窗体的Name属性值 childFrm.MdiParent = Me chil
16、dFrm.Show()EndSubPrivateSub职员信息查询ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles职员信息查询ToolStripMenuItem.ClickIf GetInstanceState(frmPeopleQuery) ThenExitSubEndIfDim childFrm AsNew frmPeopleQuery frmPeopleQuery是“职员信息查询”模块窗体的Name属性值 childFrm.MdiParent = Me c
17、hildFrm.Show()EndSub薪资福利管理(&Z)菜单下的四子菜单1)“当月工资管理”对应菜单的Name属性值:当月工资管理ToolStripMenuItem2)“工资发放历史”对应菜单的Name属性值:工资发放历史ToolStripMenuItem3)“职员奖励管理”对应菜单的Name属性值:职员奖励管理ToolStripMenuItem3)“职员惩罚管理”对应菜单的Name属性值:职员惩罚管理ToolStripMenuItemPrivateSub当月工资管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e
18、 As System.EventArgs) Handles当月工资管理ToolStripMenuItem.ClickIf GetInstanceState(frmSalaryManage) ThenExitSubEndIfDim childFrm AsNew frmSalaryManage frmSalaryManage是“当月工资管理”模块窗体的Name属性值 childFrm.MdiParent = Me childFrm.Show()EndSubPrivateSub工资发放历史ToolStripMenuItem_Click(ByVal sender As System.Object, B
19、yVal e As System.EventArgs) Handles工资发放历史ToolStripMenuItem.ClickIf GetInstanceState(frmSalaryHis) ThenExitSubEndIfDim childFrm AsNew frmSalaryHis frmSalaryHis是“工资发放历史”模块窗体的Name属性值 childFrm.MdiParent = Me childFrm.Show()EndSubPrivateSub职员奖励管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVa
20、l e As System.EventArgs) Handles职员奖励管理ToolStripMenuItem.ClickIf GetInstanceState(frmPrize) ThenExitSubEndIfDim childFrm AsNew frmPrize frmPrize是“职员奖励管理”模块窗体的Name属性值 childFrm.MdiParent = Me childFrm.Show()EndSubPrivateSub职员惩罚管理ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.E
21、ventArgs) Handles职员惩罚管理ToolStripMenuItem.ClickIf GetInstanceState(frmPunishInfo) ThenExitSubEndIfDim childFrm AsNew frmPunishInfo frmPunishInfo是“职员惩罚管理”模块窗体的Name属性值 childFrm.MdiParent = Me childFrm.Show()EndSubEndClass附数据库介绍本系统的数据库描述如下:(注意表间关系的建立,请看提供的数据库文件hrmbook.mdb,同学们可直接使用)数据库表(7张表)用户清单表字段名字段类型是
22、否主键用户编号文本是部门文本否姓名文本否性别文本否密码文本否组织机构编码表字段名字段类型是否主键说明内部编号自动编号否类别文本否AbsIndex数字否记录总机构中索引ItemIndex数字否记录在同级结构中的索引ItemLevel数字否记录是第几个级别ParentIndex数字否记录的上级结构中索引类别号文本否单位编号文本是单位名称文本否拼音编码文本否单位地址文本否单位电话号码文本否开户银行文本否帐号文本否开户全称文本否职员基本信息表字段名字段类型是否主键内部编号自动编号否职员编号文本是姓名文本否姓名简码文本否性别文本否出生日期数字否年龄数字否籍贯文本否民族文本否文化程度文本否毕业学校文本否健
23、康状况文本否婚姻状况文本否身份证号码文本否家庭电话文本否办公电话文本否手机文本否电子邮件地址文本否职工账号文本否单位编号文本否备注文本否月工资统计表字段名字段类型是否主键日期数字否职员编号文本是基本工资数字否浮动工资数字否合同补数字否粮副补数字否房补数字否临时补数字否职务工资数字否工龄工资数字否考核工资数字否奖金数字否应发金额合计数字否房租数字否水电费数字否请假扣除数字否考勤扣除数字否罚款数字否住房公积金数字否医疗保险数字否养老保险数字否失业保险数字否生育保险数字否工伤保险数字否应扣金额合计数字否工资合计数字否个人所得税数字否实发金额数字否发放否文本否月份数字否工资发放历史表字段名字段类型是否
24、主键日期数字否职员编号文本是基本工资数字否浮动工资数字否合同补数字否粮副补数字否房补数字否临时补数字否职务工资数字否工龄工资数字否考核工资数字否奖金数字否应发金额合计数字否房租数字否水电费数字否请假扣除数字否考勤扣除数字否罚款数字否住房公积金数字否医疗保险数字否养老保险数字否失业保险数字否生育保险数字否工伤保险数字否应扣金额合计数字否工资合计数字否个人所得税数字否实发金额数字否发放否文本否月份数字否职员惩罚表字段名字段类型是否主键序号自动编号是职员编号文本否惩罚类型文本否惩罚金额数字否是否计入工资文本否惩罚原因文本否部门意见文本否惩罚日期数字否职员奖励表字段名字段类型是否主键序号自动编号是职员
25、编号文本否奖励类型文本否奖励金额数字否是否计入工资文本否奖励原因文本否部门意见文本否奖励日期数字否注意:添加代码时要注意有些代码是有联系的,比如,某过程可能调用其它过程。那么被调过程写好后,主调过程调用时才是正确的。否则说某某过程没有声明。2学时课要完成的任务“机构编制管理(&X)”菜单下的二子菜单“机构设置及编码”窗体模块frmDepManage的实现“机构详细信息”frmDepInfo窗体模块的实现1)“机构设置及编码”窗体frmDepManage设计、代码及运行界面。其主要功能为:实现设置机构的层次关系【把数据库里的组织机构在TreeView控件里显示成层次关系】。PublicClass
26、 frmDepManagePrivate dvList As DataViewPrivateSub InitTree(ByRef nodes As TreeNodeCollection, ByVal sParentIndex AsString)TryDim tmpNode As TreeNodeDim absIndex AsStringDim dvTemp As DataView = dvList.Table.DefaultView选出数据源中ParentIndex为sParentIndex的数据行Dim dataRows() As DataRow = dvList.Table.Select(
27、ParentIndex= & sParentIndex & )循环添加TreeNodeForEach dr As DataRow In dataRows获得节点所需数据 tmpNode = New TreeNode tmpNode.Text = dr(类别) absIndex=dr(AbsIndex)添加节点 nodes.Add(tmpNode)递归调用 InitTree(nodes(nodes.Count - 1).Nodes, absIndex)NextCatch ex As Exception MessageBox.Show(初始化TreeViews失败)EndTryEndSubPriv
28、ateSub frmDepManage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadDim db AsNew DataBaseDim strSQL AsString strSQL = select * from 组织机构编码表 order by absIndex dvList = db.RunSelectSQL(strSQL) db.Dispose() InitTree(trvList.Nodes, -1)EndSubEndClass2)“机构详细信息”窗体frmDepIn
29、fo设计、相应代码及运行界面其功能主要是维护组织机构的信息【比如:修改某信息后,点保存按钮保存到数据库】DataGridView控件DataGridView控件注意:用代码绑定DataGridView控件【dgvDepInfo.DataSource=dt.DefaultView】2学时课要完成的任务“人员信息管理(&Y)”菜单下的二子菜单“职员信息维护”窗体模块frmPeopleManage的实现“职员信息查询”窗体模块frmPeopleQuery的实现1)“职员信息维护”窗体模块frmPeopleManage的设计、运行界面及代码其主要功能是用于输入和修改职员的资料代码如下:相应文本框控件和
30、相应字段绑定,DataGridView控件用代码绑定PublicClass frmPeopleManagePrivate iCurrentLine AsInteger = -1PrivateSub SetDataGridView()Me.OleDbConnection1.ConnectionString = DataBase.sConnMe.OleDbDataAdapter1.Fill(Me.DataSet11)Dim dt As DataTable dt = Me.DataSet11.Tables(职员基本信息表)dt.DefaultView.AllowDelete = Falsedt.De
31、faultView.AllowNew = False dgvPeopleInfo.DataSource = dt.DefaultViewEndSubPrivateSub frmPeopleManage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadMe.OleDbDataAdapter1.Fill(Me.DataSet11, 职员基本信息表)Dim db As DataBase = New DataBaseDim strSQL AsString = select 单位编号 f
32、rom strSQL += 组织机构编码表 order by 单位编号Dim dv As DataView = db.RunSelectSQL(strSQL)ForEach drv As DataRowView In dvMe.cbbDepCode.Items.Add(drv(单位编号)Next db.Dispose() SetDataGridView()显示图片,把绑定“Images”字段的TextBox18藏在图片框Picturebox1控件的后面IfMe.TextBox18.Text.Trim.Length 0 ThenMe.PictureBox1.Image = Image.FromF
33、ile(Me.TextBox18.Text.Trim)ElseMe.PictureBox1.Image = NothingEndIfEndSubPrivateSub dgvPeopleInfo_CellClick(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPeopleInfo.CellClickTry BindingContext(Me.DataSet11, 职员基本信息表).ResumeBinding()If iCurrentLine = -1 Or
34、 iCurrentLine dgvPeopleInfo.CurrentCell.RowIndex Then iCurrentLine = dgvPeopleInfo.CurrentCell.RowIndex BindingContext(Me.DataSet11, 职员基本信息表).Position = dgvPeopleInfo.CurrentCell.RowIndexEndIfIf dgvPeopleInfo.CurrentCell.RowIndex = Me.DataSet11.Tables(职员基本信息表).Rows.Count Then BindingContext(Me.DataS
35、et11, 职员基本信息表).SuspendBinding()EndIf显示图片,把绑定“Images”字段的TextBox18藏在图片框Picturebox1控件的后面IfMe.TextBox18.Text.Trim.Length 0 ThenMe.PictureBox1.Image = Image.FromFile(Me.TextBox18.Text.Trim)ElseMe.PictureBox1.Image = NothingEndIfCatch ex As Exception MessageBox.Show(ex.Message)EndTryEndSubPrivateSub ToolS
36、trip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClickedIf e.ClickedItem IsMe.tbbSave ThenDim row AsInteger row = dgvPeopleInfo.CurrentCell.RowIndex dgvPeopleInfo.CurrentCell = dgvPeopleInfo.Rows(row + 1).Cells(0)
37、BindingContext(Me.DataSet11, 职员基本信息表).Position = dgvPeopleInfo.CurrentCell.RowIndexTryIfMe.DataSet11.HasChanges ThenMe.OleDbDataAdapter1.Update(Me.DataSet11)Me.DataSet11.Tables(职员基本信息表).DefaultView.RowFilter = dgvPeopleInfo.CurrentCell = dgvPeopleInfo.Rows(row).Cells(0) MessageBox.Show(数据修改成功!)Else
38、dgvPeopleInfo.CurrentCell = dgvPeopleInfo.Rows(row).Cells(0) MessageBox.Show(无修改的数据!)EndIfCatch ex As Exception MessageBox.Show(修改的数据出错!)EndTryElseIf e.ClickedItem IsMe.tbbDel ThenTryDim iRow AsInteger iRow = dgvPeopleInfo.CurrentCell.RowIndexIf MessageBox.Show(确认要删除此条记录吗?, Confirm, MessageBoxButton
39、s.YesNo) = Windows.Forms.DialogResult.Yes ThenMe.DataSet11.Tables(职员基本信息表).Rows(iRow).Delete()ElseExitSubEndIfTryIfMe.DataSet11.HasChanges ThenMe.DataSet11.AcceptChanges()Me.OleDbDataAdapter1.Update(Me.DataSet11, 职员基本信息表) MessageBox.Show(数据删除成功!)Else MessageBox.Show(无修改的数据!)EndIfCatch ex As Exceptio
40、n MessageBox.Show(删除数据出错1! & ex.Message)EndTryCatch ex As Exception MessageBox.Show(删除数据出错2!)EndTryEndIfEndSubPrivateSub cbbDepCode_TextChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles cbbDepCode.TextChangedDim db As DataBase = New DataBaseDim strSQL AsString = select 单位名称 from st
41、rSQL += 组织机构编码表 where 单位编号= strSQL += Me.cbbDepCode.Text.Trim + Dim dv As DataView = db.RunSelectSQL(strSQL)If dv.Table.Rows.Count 0 ThenMe.TextBox16.Text = dv.Table.Rows(0)(0)ElseMe.TextBox16.Text = EndIfEndSubEndClass2)“职员信息查询”窗体模块frmPeopleQuery的设计、运行界面及代码其主要功能是查询职员的资料,但不能修改职员的信息。4学时课要完成的任务薪资福利管理(
42、&Z)菜单下的四子菜单第1次课要完成的任务:“当月工资管理”窗体模块功能的实现“工资发放历史”窗体模块功能的实现第2次课要完成的任务:“职员奖励管理”窗体模块功能的实现“职员惩罚管理”窗体模块功能的实现第1次课要完成的任务2学时1)“当月工资管理”窗体frmSalaryManage的设计、运行界面和代码其主要功能是计算当月工资和工资发放其代码如下:PublicClass frmSalaryManagePrivate dvMaster As DataViewPrivate iCurrentLine AsInteger = -1PrivateSub LoadData()Dim strSQL AsS
43、tring = select 姓名,日期,应发金额合计,应扣金额合计, strSQL += 工资合计,个人所得税,实发金额,发放否,a.职员编号 strSQL += from 职员基本信息表 as a,月工资统计表 as b strSQL += where a.职员编号=b.职员编号 order by 内部编号Dim db As DataBase = New DataBase dvMaster = db.RunSelectSQL(strSQL) dvMaster.AllowDelete = False dvMaster.AllowNew = False dvMaster.AllowEdit =
44、 False dgvSalaryInfo.DataSource = dvMaster控制某列的列宽For i AsInteger = 0 To 8根据内容调整列宽Me.dgvSalaryInfo.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsNext控制某列是否可以点列标题进行排序For i AsInteger = 0 To 8不可以点列标题进行排序,只能靠编程Me.dgvSalaryInfo.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortabl
45、eNext db.Dispose()Me.OleDbConnection1.ConnectionString = DataBase.sConnMe.OleDbDataAdapter1.Fill(Me.DataSet11, 月工资统计表)EndSubPrivateSub frmSalaryManage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load把新职工信息插入到工资统计表中Dim strSQL AsString = insert into 月工资统计表(职员编号) sele
46、ct 职员编号 from 职员基本信息表 as h where h.职员编号 not in (select 职员编号 from 月工资统计表)Dim db As DataBase = New DataBase db.RunDelOrInsSQL(strSQL) db.Dispose() LoadData()EndSubPrivateSub btnCalSalary_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalSalary.ClickIfMe.txbNowSalary.Text.T
47、rim.Length 6 Then MessageBox.Show(请输入正确的年月数据,比如:200903,2009表示2009年,03表示3月份)ExitSubEndIfDim month AsInteger = Convert.ToInt32(Me.txbNowSalary.Text.Trim)Dim db As DataBase = New DataBaseDim arr As ArrayList = New ArrayListDim strSQL AsString = select sum(奖励金额) as 奖金,i.职员编号 as 职员编号 from 职员奖励表 as i wher
48、e i.是否计入工资=是 and i.奖励日期 + Convert.ToString(month * 100) + and i.奖励日期 + Convert.ToString(month * 100) + and i.惩罚日期 + Convert.ToString(month + 1) * 100) + group by i.职员编号 dr = db.getResult(strSQL)While (dr.Read()Dim jine AsString = dr.GetDouble(0)Dim id AsString = dr.GetString(1) strSQL = update 月工资统计
49、表 set 罚款= + jine.ToString() + where 职员编号= & id & and 日期= & month arr.Add(strSQL)EndWhile dr.Close() strSQL = update 月工资统计表 set 罚款=0 where 罚款 is null & arr.Add(strSQL) strSQL = update 月工资统计表 set 应扣金额合计 = 房租 + 水电费 + 请假扣除 + 罚款 + 考勤扣除 + 住房公积金 + 医疗保险 + 养老保险 + 失业保险 arr.Add(strSQL) strSQL = update 月工资统计表 s
50、et 应发金额合计 = 基本工资 + 浮动工资 + 合同补 + 粮副补 + 房补 + 临时补+职务工资+工龄工资+ 考核工资+ 奖金 arr.Add(strSQL) strSQL = update 月工资统计表 set 工资合计 = 应发金额合计 - 应扣金额合计 arr.Add(strSQL) strSQL = update 月工资统计表 set 实发金额 = 工资合计 arr.Add(strSQL) db.RunMulDelOrInsSQL(arr) db.Dispose()重新加载数据 LoadData() MsgBox(当月工资计算完毕,可以发放了!)EndSubPrivateSub
51、dgvSalaryInfo_CellClick(ByVal sender AsObject, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvSalaryInfo.CellClickIf iCurrentLine = -1 Or iCurrentLine dgvSalaryInfo.CurrentCell.RowIndex Then iCurrentLine = dgvSalaryInfo.CurrentCell.RowIndex BindingContext(Me.DataSet11, 月工资统计表)
52、.Position = dgvSalaryInfo.CurrentCell.RowIndexEndIfEndSubPrivateSub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.ClickDim row AsIntegerTry row = Me.dgvSalaryInfo.CurrentCell.RowIndexMe.dgvSalaryInfo.CurrentCell = dgvSalaryInfo.Rows(row +
53、 1) Mod dvMaster.Table.Rows.Count).Cells(0)保证要修改或录入的记录完毕(位置改变,意味该记录录入完毕) BindingContext(Me.DataSet11, 月工资统计表).Position = dgvSalaryInfo.CurrentCell.RowIndexIfMe.DataSet11.HasChanges(DataRowState.Modified) ThenMsgBox(修改记录)Me.OleDbDataAdapter1.Update(Me.DataSet11)Me.DataSet11.Tables(月工资统计表).DefaultView
54、.RowFilter = Me.dgvSalaryInfo.CurrentCell = Me.dgvSalaryInfo.Rows(row).Cells(0) LoadData() MessageBox.Show(修改成功)Else MessageBox.Show(无修改的数据!)EndIfCatch ex As ExceptionMe.dgvSalaryInfo.CurrentCell = Me.dgvSalaryInfo.Rows(row).Cells(0) MessageBox.Show(修改的数据出错 & ex.Message)EndTryEndSubPrivateSub btnGiv
55、eSalary_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGiveSalary.ClickIf MessageBox.Show(是否发放?, Confirm, _ MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes ThenDim db As DataBase = New DataBaseDim id AsString = dvMaster.Table.Rows(dgvSalaryInfo.CurrentCell.Row
56、Index)(职员编号)Dim arr As ArrayList = New ArrayListDim strSQL AsString = update 月工资统计表 set 发放否=是 where 职员编号= & id & arr.Add(strSQL) strSQL = insert into 工资发放历史表 select * from 月工资统计表 where 职员编号= & id & arr.Add(strSQL) db.RunMulDelOrInsSQL(arr) LoadData()ElseExitSubEndIfEndSubEndClass2)“工资发放历史”窗体frmSlary
57、His的设计、运行界面和代码其主要功能用于查询职员历史月份的工资其代码如下:第2次课要完成的任务2学时1)“职员奖励管理”窗体frmPrize的设计、运行界面和相应代码其主要功能用于设置职员的奖励信息其代码如下:PublicClass frmPrizePrivateSub SetDataGridView()Me.OleDbConnection1.ConnectionString = DataBase.sConnMe.OleDbDataAdapter1.Fill(Me.DataSet11) dgvPrizeInfo.DataSource = Me.DataSet11.Tables(职员奖励表).
58、DefaultViewEndSubPrivateSub frmPrize_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load SetDataGridView()EndSubPrivateSub tsbSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbSave.ClickDim row AsInteger row = Me.dgvPrizeInfo.CurrentCel
59、l.RowIndexMe.dgvPrizeInfo.CurrentCell = Me.dgvPrizeInfo.Rows(row + 1).Cells(0)TryIfMe.DataSet11.HasChanges ThenMe.OleDbDataAdapter1.Update(Me.DataSet11)Me.DataSet11.Tables(职员奖励表).DefaultView.RowFilter = MessageBox.Show(数据修改成功!)Else MessageBox.Show(无修改的数据!)EndIfCatch ex As Exception MessageBox.Show(修改的数据出错! & ex.Message)EndTryEndSubPrivateSub tsbDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbDel.ClickTryDim row AsInteger row = Me.dgvPrizeInfo.CurrentCell.RowIndexIf MessageBox.Show(你确认要删除此条记录吗?, 确认, MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes The
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗健康保险产品设计
- 2026年衡水职业技术学院高职单招职业适应性测试模拟试题有答案解析
- 2026年河北软件职业技术学院单招综合素质笔试备考试题带答案解析
- 医疗保险风险管理
- 呼吸系统疾病治疗与康复技术
- 2026年河南林业职业学院高职单招职业适应性测试模拟试题有答案解析
- 医院保卫人员礼仪与安全管理实践
- 小学入学拼音题库及答案
- 肿瘤护理新进展解读
- 人工智能在儿科疾病诊断中的应用
- 个人投资收款收据
- 太阳能路灯可行性研究报告
- 华为在欧洲市场分析报告
- 中国工艺美术馆招聘笔试试卷2021
- 申论范文宝典
- DB32T 3695-2019房屋面积测算技术规程
- 贵州省纳雍县水东乡水东钼镍矿采矿权评估报告
- GB 8270-2014食品安全国家标准食品添加剂甜菊糖苷
- 易制毒化学品日常管理有关问题权威解释和答疑
- 湖北省高等教育自学考试
- 企业三级安全生产标准化评定表(新版)
评论
0/150
提交评论