以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 计算工时的难题,同一天多次出工,只计算一次。附例子 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=17986) |
-- 作者:dark272710 -- 发布时间:2012/3/30 9:50:00 -- 计算工时的难题,同一天多次出工,只计算一次。附例子 就输入了几行数据 目前的代码是, 点击生成,从表中读取数据(条件省略); 点击统计,计算每个员工姓名出现的次数,记作外勤数(已经做好)。 现在的问题是:可能当天一个员工会出现在好几个任务中,就会记作多次出勤,黑心老板说每天只能记作一次外勤 就是每天,每个人最多只能计1次外勤。水平有限……想不出了 代码在窗口的2个按钮里,大家帮忙看看~~谢谢了~~ Dim s,s1 As String Dim n As Integer Dim ls As New List(of String) Dim dt As DataTable =DataTables("考勤_Table1") For Each dr As DataRow In dt.Select("参与员工 Is Not null") For Each s In dr("参与员工").split(",") If Ls.Contains(s)= False Then Ls.Add(s) End If Next Next Dim t As Table =Tables("考勤") t.StopRedraw t.DataTable.DataRows.Clear For Each s In ls s1 = "参与员工 like \'*" & s & "*\'" MessageBox.Show(s1) Return n =dt.Compute("count(参与员工)",s1) Dim r As Row =t.addnew r("姓名") = s r("次数") = n Next t.ResumeRedraw
[此贴子已经被作者于2012-3-30 9:49:51编辑过]
|
-- 作者:sloyy -- 发布时间:2012/3/30 10:02:00 --
呵呵 和我遇到的问题一样,就是如何按姓名统计的问题, 如图: 按姓名应该是1人,统计得出的却是2人, n =dt.Compute("count(参与员工)",s1) 只能得到人次 ,我也想知道答案.
[此贴子已经被作者于2012-3-30 10:11:57编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2012/3/30 10:18:00 -- 相当复杂:
Dim dic As New Dictionary(of Date,List(of String)) |
-- 作者:dark272710 -- 发布时间:2012/3/30 10:50:00 -- 谢谢,我先研究一下 如果还要判定周末的话,也可以参考这段代码吧
|
-- 作者:dark272710 -- 发布时间:2012/3/31 15:29:00 -- 抱歉。。狐爸给我的这段代码还是吃不透,本来想改进下,用来判定双休日工时的 我只有曲线救国,想要从生成的数据中删除非周末的数据,可是还是不行,达不到效果。麻烦看看,谢谢 For Each dr As DataRow In DataTables("考勤_Table1").DataRows Dim dt As String = dr("工程时间").DayOfWeek If dt <> 0 and dt <> 6 Then Tables("考勤_Table1").Current.Delete End If Next 需要发个例子么?
|
-- 作者:狐狸爸爸 -- 发布时间:2012/3/31 16:23:00 -- For Each i As integer = DataTables("考勤_Table1").DataRows.Count -1 To 0 Step -1
Dim dr AS DataRow = DataTables("考勤_Table1").DataRows(i)
Dim dt As String = dr("工程时间").DayOfWeek
If dt <> 0 and dt <> 6 Then
dr.Delete
End If
Next
|