介绍两个模块:员工入职,和员工返职

1、员工入职:

这一部分模块主要涉及的是ComboBox和LookUpEdit(DevExpress)绑定数据源,GV列添加超链接列,超链接文本弹出窗体传值取值,单线程从Access数据库读取信息,Datagridview添加ComboBox列并赋值等。还涉及了递归部门的问题,这个在我其他文章里有单独讲,这里就不贴了。需要的可以移步https://blog.csdn.net/qq_38374540/article/details/106259895这里查看

  • ComboBox和LookUpEdit(DevExpress)绑定数据源

其实我觉得这两个的主要区别就是两列和多列的问题,其他的功能暂时没涉及到,这里ComboBox只能绑定两列,显示只能显示一列,而LookupEdit可以绑定表。

            //ComboBoxstring sql;sql = "select company_FK,companyName from sys_tx_kqSystem_userLog where ISNULL(isuse,'N')='Y' and userID='" + FormM.lbluserLog.Text.Trim() + "'";DataTable dtRzgs;if (!DB.AF.execSql(sql, sqlconn, out dtRzgs)){return;}DataRow drRz = dtRzgs.NewRow();drRz["company_FK"] = "";drRz["companyName"] = "";dtRzgs.Rows.InsertAt(drRz, 0);ddlRzgs.DataSource = dtRzgs;ddlRzgs.ValueMember = "company_FK";ddlRzgs.DisplayMember = "companyName";//LookupEditsql = "select replace(Code,' ','') as Code, replace(Name,' ','') as Name,replace( Remark,' ','') as Remark from sys_tx_zply a left join sys_tx_kqSystem b on a.kqSystem = b.kqSystem where b.company_FK = '" + ddlRzgs.SelectedValue.ToString().Trim() + "'";if (!DB.AF.execSql(sql, sqlconn, out dtzply)){return;}DataRow drzply = dtzply.NewRow();drzply["Code"] = "";drzply["Name"] = "";drzply["Remark"] = "";dtzply.Rows.InsertAt(drzply, 0);ddlzply.Properties.ShowHeader = false;ddlzply.Properties.ValueMember = "Code";ddlzply.Properties.DisplayMember = "Name";ddlzply.Properties.DataSource = dtzply;ddlzply.Properties.BestFitMode = BestFitMode.BestFitResizePopup;ddlzply.EditValue = "";ddlzply.Text = "";
  • GV列添加超链接列
            DataGridViewLinkColumn dlink = new DataGridViewLinkColumn();dlink.Text = "删除";dlink.Name = "linkDelete";dlink.HeaderText = "删除";dlink.UseColumnTextForLinkValue = true;GV.Columns.Insert(0, dlink);
  • 超链接文本弹出窗体传值取值
  //窗体实例化,弹出窗体,这里有个ShowDialog()和Show()的小知识点private void labgz_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){try{//因为我是表头表身都有这个超链接,所以我在传的时候判断了一下是点击表头的还是点击表身的,0是指行项,但是表头没有行项,所以传了0GongZhong gzForm = new GongZhong(this, "head", 0);gzForm.gz(ddlRzgs.SelectedValue.ToString().Trim());gzForm.ShowDialog();return;}catch (Exception ec){MessageBox.Show("错误:" + ec.StackTrace, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}
//表身的就写在GV的点击事件里private void GV_CellContentClick(object sender, DataGridViewCellEventArgs e){try{#region 删除string buttonText = this.GV.Rows[e.RowIndex].Cells[0].Value.ToString().Trim();if (buttonText == "删除" && e.RowIndex != -1 && e.ColumnIndex == 0){if (MessageBox.Show("确定删除吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK){string errMsg, sql;this.GV.Rows.RemoveAt(e.RowIndex);sesstab = (DataTable)GV.DataSource;if (GV.Rows.Count > 0){byte[] byteImage = (byte[])sesstab.Rows[0]["照片"];MemoryStream ms = new MemoryStream(byteImage);Bitmap bmpt = new Bitmap(ms);pictureBox1.Image = bmpt;}else{if (ddlzc.SelectedValue.ToString() == "0"){//MessageBox.Show(ddlRzgs.SelectedValue.ToString().Trim());MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);sql = "select a.companyName 公司, b.deptName 部门, a.userID 工号, a.userName 姓名, a.Pycounts 入职次数, a.Sfz 身份证号码, a.G_sfzyxr 身份证生效日 " +" , a.G_sfzsxr 身份证失效日, a.G_fzjg 签发机关, a.BornDate 出生日期,case when sex = '0' then '男' else '女' end 性别, " +" PyDate 入职日期,case when IfDaKa = 1 then '是' else '否' end 打卡, Nation_Name 民族, HomeAddr 籍贯, " +" case when ISNULL(isZc,'')= 'E' then '转厂入职' when ISNULL(isZc,'')= 'D' then '转厂离职' else '否' end 转厂, " +" case when State = '0' then '在职' else '离职' end 状态, " +" a.G_cy 人员性质, a.G_ygxz 用工性质, c.Name 计薪方式, d.Name 工种, a.G_zply 招聘途径, a.G_ 所属厂区, a.G_dkcq 打卡厂区, SUBSTRING(a.Memo, 1, CHARINDEX(',', a.Memo) - 1) 介绍人,e.Name 招聘来源, a.Memo 备注, " +" LzDate 离职日期,'[' + whr + ']' + a.whrName 维护人,a.whrq 维护日期, a.photo 照片 " +" from sys_tx_employee a " +" left join sys_tx_kqSystem_dept b on a.Dept = b.deptID and a.company_FK = b.company_FK " +" left join sys_tx_Jxfs c on a.Jxfs = c.Code " +" left join sys_tx_GongZhong d on a.GongZhong = d.Code and(select kqSystem from sys_tx_kqSystem where company_FK = a.company_FK) = d.kqSystem " +" left join sys_tx_zply e on replace(e.Code, ' ', '') = replace(SUBSTRING(a.Memo, CHARINDEX(',', a.Memo) + 1, len(a.Memo) - charindex(',', a.Memo)), ' ', '') " +" where a.company_FK = '" + ddlRzgs.SelectedValue.ToString() + "' and convert(varchar(10), a.whrq, 120) = convert(varchar(10), getdate(), 120) order by a.whrq desc ";DataTable dt;if (!DB.AF.execSql(sql, sqlconn, out dt, out errMsg)){if (errMsg != ""){MessageBox.Show(errMsg, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}GV.DataSource = dt;}else if (ddlzc.SelectedValue.ToString() == "1"){MessageBox.Show("转厂成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);sql = " select a.companyName 公司,b.deptName 部门 ,userID 工号,userName 姓名,Pycounts 入职次数,Sfz 身份证号码,BornDate 出生日期,case when sex = '0' then '男' else '女' end 性别, " +" PyDate 入职日期,case when IfDaKa = 1 then '是' else '否' end 打卡, Nation_Name 民族, HomeAddr 籍贯, " +" case when ISNULL(isZc,'')= 'E' then '转厂入职' when ISNULL(isZc,'')= 'D' then '转厂离职' else '否' end 转厂, " +" case when State = '0' then '在职' else '离职' end 状态, " +" a.G_cy 人员性质, a.G_ygxz 用工性质, c.Name 计薪方式, d.Name 工种, a.G_zply 招聘途径, a.G_ 所属厂区, a.G_dkcq 打卡厂区, SUBSTRING(a.Memo, 1, CHARINDEX(',', a.Memo) - 1) 介绍人,e.Name 招聘来源, a.Memo 备注, " +" LzDate 离职日期,'[' + whr + ']' + whrName 维护人,a.whrq 维护日期, photo 照片,G_sfzyxr 身份证生效日, G_sfzsxr 身份证失效日,G_fzjg 签发机关 " +" from sys_tx_employee a " +" left join sys_tx_kqSystem_dept b on a.Dept = b.deptID and a.company_FK = b.company_FK " +" left join sys_tx_Jxfs c on a.Jxfs = c.Code " +" left join sys_tx_GongZhong d on a.GongZhong = d.Code and(select kqSystem from sys_tx_kqSystem where company_FK = a.company_FK) = d.kqSystem " +" left join sys_tx_zply e on replace(e.Code, ' ', '') = replace(SUBSTRING(a.Memo, CHARINDEX(',', a.Memo) + 1, len(a.Memo) - charindex(',', a.Memo)), ' ', '') " +" where a.company_FK = '" + ddlRzgs.SelectedValue.ToString().Trim() + "' and convert(varchar(10), a.whrq, 120) = convert(varchar(10), getdate(), 120) and ISNULL(isZc,'') = 'E' order by a.whrq desc ";DataTable dt;if (!DB.AF.execSql(sql, sqlconn, out dt, out errMsg)){if (errMsg != ""){MessageBox.Show(errMsg, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}GV.DataSource = dt;}GV.Columns[0].Visible = false;GV.Columns[1].Visible = false;GV.Columns["工种"].Visible = false;GV.Columns["招聘来源"].Visible = false;GV.Columns["计薪方式"].Visible = false;tm.Stop();btnReadCard.Text = "开始读卡";txtRzrq.Text = DateTime.Now.ToShortDateString().ToString();ddldept.Text = "";btndept.Text = "";deptId = "";ddlDk.Text = "是";ddlzc.Text = "否";pictureBox1.Image = null;ddljxfs.Text = "";txtgzCode.Text = "";txtgzName.Text = "";ddlsscq.Text = "";ddlDKArea.Text = "";ddlPerXZ.Text = "";ddlYGXZ.Text = "";ddlZPTJ.Text = "";txtjsr.Text = "";}}else return;}#endregion#region 工种if (GV.Columns[e.ColumnIndex].Name == "btnd" && e.RowIndex != -1){GongZhong gzForm = new GongZhong(this, "gv", e.RowIndex);gzForm.gz(ddlRzgs.SelectedValue.ToString().Trim());gzForm.ShowDialog();return;}#endregion}catch (Exception ec){MessageBox.Show("错误:" + ec.StackTrace, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}//这是我另一个窗体,值传过来之后先赋值给全局变量,因为别的地方要用到public GongZhong(Form_employee_add fmz , string name,int row){InitializeComponent();fm = fmz;flag = name;rowNo = row;}
//点击选择后把值写回原来的窗体private void GV_CellContentClick(object sender, DataGridViewCellEventArgs e){try{if (GV.Columns[e.ColumnIndex].Name == "btnd" && e.RowIndex != -1 ){string Code, Name;Code = GV.Rows[e.RowIndex].Cells[1].Value.ToString().Trim();Name = GV.Rows[e.RowIndex].Cells[2].Value.ToString().Trim();if (flag == "head"){fm.txtgzCode.Text = Code;fm.txtgzName.Text = Name;}else if (flag == "gv"){fm.GV.Rows[rowNo].Cells["工种"].Value = Code;}this.Close();return;}}catch (Exception ec){MessageBox.Show("错误:" + ec.StackTrace, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}}
  • 单线程从Access数据库读取信息
        public Thread threads;public void getBarCodeData(){try{bz = 0;string sqlAccess = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files (x86)\神思二代证\ssid.mdb";OleDbConnection conn;conn = new OleDbConnection(sqlAccess);DataSet ds = new DataSet();conn.Open();string sql = "select * from citizen where isDK = 0 order by ID asc ";OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn);OleDbCommandBuilder cb = new OleDbCommandBuilder(oda);oda.UpdateCommand = cb.GetUpdateCommand();oda.Fill(ds);DataTable dt;dt = ds.Tables[0];for (int i = 0; i < dt.Rows.Count; i++){string sqln = "select count(userID) as iszz  from sys_tx_employee where State = 0 and Sfz= '" + dt.Rows[i]["IDCardNum"].ToString() + "'";DataTable dtn;if (!DB.AF.execSql(sqln, sqlconn, out dtn)){MessageBox.Show("获取员工在职信息失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}if (dtn.Rows[0]["iszz"].ToString() == "0"){GV.Columns[0].Visible = true;string sqlPyCounts = "select COUNT(userID)+1 as PyCounts  from sys_tx_employee where ISNULL(isZc,'N') in ('N','E') and Sfz= '" + dt.Rows[i]["IDCardNum"].ToString() + "'";DataTable dtPyCounts;if (!DB.AF.execSql(sqlPyCounts, sqlconn, out dtPyCounts)){MessageBox.Show("获取员工入职次数等信息失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}DataRow dr = sesstab.NewRow();dr["身份证号"] = dt.Rows[i]["IDCardNum"].ToString();dr["姓名"] = dt.Rows[i]["Name"].ToString();dr["性别"] = dt.Rows[i]["sex"].ToString();dr["民族"] = dt.Rows[i]["Folk"].ToString();dr["出生日期"] = dt.Rows[i]["BirthDay"].ToString();dr["住址/籍贯"] = dt.Rows[i]["Address"].ToString();dr["签发机关"] = dt.Rows[i]["IssueOrgan"].ToString();dr["有效期始"] = dt.Rows[i]["AvailabilityBegin"].ToString();dr["有效期止"] = dt.Rows[i]["AvailabilityEnd"].ToString();dr["入职次数"] = dtPyCounts.Rows[0]["PyCounts"].ToString();dr["照片"] = dt.Rows[i]["Photo"];if (GV.DataSource != null){DataGridViewRow row = GV.Rows.Cast<DataGridViewRow>().FirstOrDefault(rd => rd.Cells[6].EditedFormattedValue.Equals(dt.Rows[i]["IDCardNum"].ToString()));if (row != null) GV.Rows.Remove(row);sesstab.Rows.InsertAt(dr, 0);GV.Rows[0].Cells["计薪方式"].Value = ddljxfs.SelectedValue;GV.Rows[0].Cells["工种"].Value = txtgzCode.Text;GV.Rows[0].Cells["招聘来源"].Value = ddlzply.EditValue;GV.Rows[0].Cells["介绍人"].Value = txtjsr.Text;}}else if (dtn.Rows[0]["iszz"].ToString() == "1"){MessageBox.Show("该员工【" + dt.Rows[i]["Name"].ToString() + "】在HR系统为在职状态!不允许再次入职!");}else{MessageBox.Show("该员工【" + dt.Rows[i]["Name"].ToString() + "】在HR系统存在多条在职信息");}}if (dt.Rows.Count != 0){for (int i = 0; i < dt.Rows.Count; i++){dt.Rows[i]["isDK"] = -1;}oda.Update(dt);ds.AcceptChanges();}conn.Close();int r = dt.Rows.Count;if (sesstab.Rows.Count > 0){byte[] byteImage = (byte[])sesstab.Rows[0]["照片"];MemoryStream ms = new MemoryStream(byteImage);Bitmap bmpt = new Bitmap(ms);pictureBox1.Image = bmpt;}Thread.Sleep(1000);bz = 1;return;}catch (Exception ec){MessageBox.Show(ec.Message);bz = 1;return;}}private void tm_Tick(object sender, EventArgs e){tm.Stop();if (bz == 1){if (ddlzc.SelectedValue.ToString() == "0")threads = new Thread(getBarCodeData);else if (ddlzc.SelectedValue.ToString() == "1")threads = new Thread(getBarCodeDataZC);threads.IsBackground = true;threads.Start();}tm.Start();return;}private void btnbegin_Click(object sender, EventArgs e){if (btnReadCard.Text == "开始读卡"){btnReadCard.Text = "结束读卡";GV.Columns[0].Visible = true;GV.Columns[1].Visible = true;GV.Columns["工种"].Visible = true;GV.Columns["招聘来源"].Visible = true;GV.Columns["计薪方式"].Visible = true;if (ddlzc.SelectedValue.ToString() == "0"){#region GVGV.DataSource = null;sesstab = new DataTable();sesstab.Columns.Add("介绍人", typeof(string));sesstab.Columns.Add("身份证号", typeof(string));sesstab.Columns.Add("姓名", typeof(string));sesstab.Columns.Add("性别", typeof(string));sesstab.Columns.Add("民族", typeof(string));sesstab.Columns.Add("出生日期", typeof(string));sesstab.Columns.Add("住址/籍贯", typeof(string));sesstab.Columns.Add("入职次数", typeof(string));sesstab.Columns.Add("照片", typeof(System.Byte[]));sesstab.Columns.Add("签发机关", typeof(string));sesstab.Columns.Add("有效期始", typeof(string));sesstab.Columns.Add("有效期止", typeof(string));sesstab.Columns.Add("错误信息", typeof(string));this.GV.DataSource = sesstab;this.GV.EditMode = DataGridViewEditMode.EditOnEnter;GV.Columns["身份证号"].Width = 180;GV.Columns["姓名"].Width = 75;GV.Columns["性别"].Width = 60;GV.Columns["民族"].Width = 75;GV.Columns["出生日期"].Width = 100;GV.Columns["住址/籍贯"].Width = 260;GV.Columns["入职次数"].Width = 90;GV.Columns["照片"].Width = 100;GV.Columns["签发机关"].Width = 100;GV.Columns["有效期始"].Width = 100;GV.Columns["有效期止"].Width = 100;GV.Columns["错误信息"].Width = 300;GV.Columns["身份证号"].ReadOnly = true;GV.Columns["姓名"].ReadOnly = true;GV.Columns["性别"].ReadOnly = true;GV.Columns["民族"].ReadOnly = true;GV.Columns["出生日期"].ReadOnly = true;GV.Columns["住址/籍贯"].ReadOnly = true;GV.Columns["入职次数"].ReadOnly = true;GV.Columns["照片"].ReadOnly = true;GV.Columns["签发机关"].ReadOnly = true;GV.Columns["有效期始"].ReadOnly = true;GV.Columns["有效期止"].ReadOnly = true;GV.Columns["错误信息"].ReadOnly = true;#endregionbz = 1;tm.Start();}else if (btnReadCard.Text == "结束读卡"){btnReadCard.Text = "开始读卡";tm.Stop();}}
  • Datagridview添加ComboBox列并赋值

赋值的在上面了,这边就贴一下添加ComboBox列的方法:

DataGridViewComboBoxColumn jxfs = new DataGridViewComboBoxColumn();sql = "select Code,Name from sys_tx_Jxfs";DataTable dtjxfs;if (!DB.AF.execSql(sql, sqlconn, out dtjxfs)){return;}jxfs.Name = "计薪方式";jxfs.DataSource = dtjxfs;jxfs.ValueMember = "Code";jxfs.DisplayMember = "Name";

2、员工返职

这块主要就一个知识点,就是一般GV添加超链接列都是添加一整列,没办法根据行项的值设置该超链接列是否显示。这里就是解决这个问题。主要思路很简单就是在数据库里查出符合条件的行项,做成一列,然后把这列变成超链接,我这个好像在别的文章里写过,这里就不贴代码了。

项目总结:HR员工系统相关推荐

  1. 如何将JBoss HR员工奖励项目放入云端

    我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了. 我们从头到尾讨论了各个层,但尚未为您提供除Red Hat Container Developme ...

  2. Java毕设项目电力公司员工安全培训系统计算机(附源码+系统+数据库+LW)

    Java毕设项目电力公司员工安全培训系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行) ...

  3. Java毕设项目电力公司员工安全培训系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目电力公司员工安全培训系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX ...

  4. hr员工数据分析(实战)

    hr员工数据分析项目实战 (数据已脱敏) 背景说明 某公司最近公司发生多起重要员工意外离职.部分员工工作缺乏积极性等问题,受hr部门委托,开展数据分析工作. 经与hr部门沟通,确定以下需求: 制定数据 ...

  5. HR SaaS系统,虎蔓开创云端人力资源管理的领先新模式!

    虎蔓正式成立于2015年10月16日,总部位于北京,是一家全新的互联网人力资源服务平台.虎蔓所使用的HRSaaS系统,是人力资源管理eHR与SaaS云服务的结合体,它延续了传统eHR在组织人事.绩效. ...

  6. java计算机毕业设计临港新片区招商引资项目管理系统源代码+数据库+系统+lw文档

    java计算机毕业设计临港新片区招商引资项目管理系统源代码+数据库+系统+lw文档 java计算机毕业设计临港新片区招商引资项目管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S ...

  7. HR员工管理的三重境界:管事、管人、管心

    在一个公司里,员工来来往往是常态,虽说我们不能替他们决定,但是一定是与公司的管理者有一定的关系.马云曾经说过:"一个员工离职,不外乎两种原因,一是钱没给到位:二是心里委屈了".一句 ...

  8. JavaEE项目实战(OA系统)之十八_流程审批之一

    JavaEE项目实战(OA系统)之十八_流程审批之一 下面介绍OA系统的另一模块:流程审批. OA系统推崇的是无纸化办公,因此各项事务的流程审批是OA系统的一大类应用. 下面,我们来设计流程审批的数据 ...

  9. HR SaaS系统对企业来说有什么好处?

    目前,企业服务市场上提供HR SaaS服务的厂商有三种,分别有专业云HR供应商.综合类管理软件供应商和专业HR软件供应商.目前企业大多数选择的可能是一体化的供应商(比如欢雀HR SaaS.北森.SAP ...

最新文章

  1. 深入探讨PHP中的内存管理问题
  2. ML_SVM的菜鸟实现
  3. ubuntu 下安装nginx
  4. tf.truncated_normal
  5. 编译原理lr(0)c语言,关于编译原理:LR(1)LR(0)文法判断?
  6. CSS3的box-sizing:向外撑content-box向内挤border-box 外撑的padding算自己的盒子会变大 内挤的padding会缩小自己
  7. PHP服务Fcgi进程及PHP解析优化
  8. javascript入门_JavaScript入门手册(2020版)
  9. 接口访问加密_加密“访问”的争论日益激烈
  10. 最小树形图(bzoj 4349: 最小树形图 2260: 商店购物)
  11. android查看数据库
  12. Delphi7 如何调整背景色为黑色容易护眼
  13. 本地测试用的帐号csv文件
  14. 安阳工学院ACM历史(续)
  15. 杨柳目-杨柳科-杨属-杨树:杨树
  16. 添加网络位置(共享目录)
  17. 《远见》的读后感作文1000字范文
  18. 两万亿医疗市场中的IT生意 穆穆-movno1
  19. STM32L431(CubeMX)使用DHT11读取环境温度与湿度并通过串口打印
  20. matlab计算截断误差,Matlab相位截断误差仿真解说.doc

热门文章

  1. 10倍于以往的传输速度带宽,Bluetooth(蓝牙)4.2标准发布
  2. java国际象棋,java – 国际象棋中casteld的实现
  3. 如何选择最佳域名(14个技巧和工具)
  4. 计算机显示器发展趋势论文,计算机显示器论文.doc
  5. iphone12怎样快速录屏(苹果12录屏方法)
  6. 国内阿里云Maven镜像(速度飞起)
  7. echart 报表统计
  8. Bootstrap前端开发框架【使用教程】
  9. 北大软件工程 计算机技术,2019年北京大学软件工程细致入微考研经验分享
  10. 「重磅」2020下半年中国移动互联网大报告