以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助代码(考勤表) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=121968) |
-- 作者:huizhong -- 发布时间:2018/7/16 17:03:00 -- 求助代码(考勤表) 老师,求教下关于考勤计算和统计的代码
考勤机导出一个表,表明为“打卡记录”,表内有三列数据,A列 为员工编号;B列 为打卡时间(日期时间格式);在此基础上我以公式形式生成了C列(索引列) 为员工编号+打卡日期(没有时间)以此列作为索引标识,区分同一个员工在同一天的打卡次数
需求:在狐表系统有一个表“考勤台账”,表内有【员工编号】列,【打卡日期】列(没有时间),【早打卡时间】列,【晚打卡时间】列,我以代码形式如何实现:在导入数据的时候,同一个员工,同一天的最早打卡时间放入该员工编号和同打卡日期的【早打卡时间】列;同理,将同一个员工,的同一天的最后一次打卡时间放入该员工编号和同打卡日期的【晚打卡时间】列
当前导入按钮的代码如下,能导入数据,但是没有上述功能,烦劳老师指点下代码,新手上路多多帮忙!! Dim dlg As New OpenFileDialog |
-- 作者:有点甜 -- 发布时间:2018/7/16 18:18:00 -- 建议做一个【考勤表】,把数据都导入此表。然后,你的【台账表】再根据【考勤表】统计你所需要的数据(比如查找早晚时间、打卡次数等等)
http://www.foxtable.com/webhelp/scr/1453.htm
|
-- 作者:huizhong -- 发布时间:2018/7/17 16:43:00 -- 老师,我按照您给的建议,已将考勤记录数据导入到【考勤台账】表中,然后,再整理提取到【考勤查询】表,但是,由于我是新手,对代码不熟,向您请教一下代码的编写问题 考勤台账有【考勤编号】【打卡时间】【索引标识】三列,其中索引标识是将考勤编号与打卡时间的年月进行合并而成 考勤查询有【考勤编号】【员工姓名】【所属公司】【1号上班时间】【1号下班时间】【1号工作时间】 以下是【考勤查询】窗口的查询按钮代码 If e.Form.Controls("DateTimePicker1").Value Is Nothing OrElse e.Form.Controls("DateTimePicker2").Value Is Nothing Then MessageBox.Show("请输入起始日期和终止日期!","提示", MessageBoxButtons.OK ,MessageBoxIcon.Information) e.Cancel = True Else Dim C As New Filler DataTables("考勤查询").DataRows.Clear() \'清除原有数据 C.SourceTable = DataTables("考勤台账") \'来源表 C.SourceCols = "索引标识,考勤编号" \'来源列 C.Filter = "打卡时间日期格式 >= #" & e.Form.Controls("DateTimePicker1").value & "# And 打卡时间日期格式 <= #" & e.Form.Controls("DateTimePicker2").value & "# " \'判断条件 C.DataTable = DataTables("考勤查询") \'目标表 C.DataCols = "索引标识,考勤编号" \'目标列 C.Fill() Tables("考勤管理窗口_Table2").Sort = "所属公司 DESC" End If 以下是【考勤查询】表的事件代码 If e.DataCol.Name = "考勤编号" Then If e.NewValue Is Nothing Then e.DataRow("员工姓名") = Nothing e.DataRow("所属公司") = Nothing Else Dim DD As DataRow DD = DataTables("员工档案").Find("[考勤编号] = \'" & e.NewValue & "\'") If DD IsNot Nothing Then e.DataRow("员工姓名") = DD("员工姓名") e.DataRow("所属公司") = DD("所属公司") End If End If End If 请教:我如何编写表代码,实现将 “考勤台账” 中的某一个员工的当天最早一次打卡时间放在 ‘考勤查询“ 的【1号上班时间】列中,以1号为例,实际共31天,您受累给指导下,搞了一下午了,也看了所有与跨表引用和导入数据相关的帮助,搞不定
|
-- 作者:有点甜 -- 发布时间:2018/7/17 18:51:00 -- 比如代码
Dim d As Date = "2018-7-17" Dim DD As DataRow
DD = DataTables("考勤台账").Find("[考勤编号] = \'" & e.datarow("考勤编号") & "\' and 打卡时间 >= #" & d & "# and 打卡时间 < #" & d.adddays(1) & "#", "打卡时间")
msgbox(dd("打卡时间")) \'最早
DD = DataTables("考勤台账").Find("[考勤编号] = \'" & e.datarow("考勤编号") & "\' and 打卡时间 >= #" & d & "# and 打卡时间 < #" & d.adddays(1) & "#", "打卡时间 desc")
msgbox(dd("打卡时间")) \'最迟 |