以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 判断节假日是否应带薪(狐爸帮我看看好吗) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=6356) |
||||
-- 作者:wqc360 -- 发布时间:2010/3/24 15:28:00 -- 判断节假日是否应带薪(狐爸帮我看看好吗) 请见示范文件: 星期几=0时为星期天,上周6天(星期天为第1天)请假工时合计小于8小时,本星期天带薪工时为8. 星期几=8时为节假日,前1天或后1天出勤工时>=8小时,或前1天或后1天带薪工时=8小时,本节假日带薪工时为8.
[此贴子已经被作者于2010-3-25 0:24:01编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2010/3/25 0:25:00 -- 顶上去 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/3/25 0:32:00 -- 呵呵,你这个超出技术支持的范畴了,等于是要我直接帮你设计程序了。 既然条件清楚,你应该自己写代码。 写的过程中遇到问题再说,例如知道某一日期,如何求得该日期上一周的起始日和终止日的,以及本周的起始日和终止日,这样的问题大家会乐意回答的。 [此贴子已经被作者于2010-3-25 0:32:12编辑过]
|
||||
-- 作者:wqc360 -- 发布时间:2010/3/25 0:48:00 -- 写代码水平太低,都是那帮助和坛友的样品进行改装,比如星期几列的代码,我就是根据以前的代码改编的,像我现在的带薪工时列求值这个问题,我还没找到示范,没办法改编,要不帮我做一段,其他我在依葫芦画瓢,到时有困难在请教好吗,谢谢 |
||||
-- 作者:czy -- 发布时间:2010/3/25 1:28:00 -- 我写了一个流程语句,不知道理解的对不对? |
||||
-- 作者:czy -- 发布时间:2010/3/25 1:31:00 -- 你的问题说老实话很难理解,所以我只写了一个判断请假工时的。 |
||||
-- 作者:wqc360 -- 发布时间:2010/3/25 1:53:00 -- 谢谢C版 Dim dt As DataTable = DataTables("考勤") For Each dr As DataRow In dt.DataRows Dim d1 as Date = dr("日期") 这里怎样改成判断"星期几"=0,因"星期几"已经给出特殊日期了,及星期天为0,节假日(与星期天重合也是)为8. if d1.dayofweek = 0 Then d1 = d1.AddDays(-d1.dayofweek-6) Dim d2 as Date = d1.AddDays(-d1.dayofweek+7) Dim Sum As Integer = dt.Compute("Sum(请假工时)","姓名 = \'" & dr("姓名") & "\' And 日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#") if Sum < 8 Then dr("带薪工时判断条件_星期几为0_带薪工时值") = 8 Else dr("带薪工时判断条件_星期几为0_带薪工时值") = Nothing End If End If Next |
||||
-- 作者:czy -- 发布时间:2010/3/25 12:38:00 -- 如果判断星期几为0,应该这样吧。 Dim dt As DataTable = DataTables("考勤") For Each dr As DataRow In dt.DataRows if dr("星期几") = 0 Then Dim d1 as Date = dr("日期") Dim Sum As Integer = dt.Compute("Sum(请假工时)","姓名 = \'" & dr("姓名") & "\' And 日期 >= #" & d1.AddDays(-6) & "# And 日期 <= #" & dr("日期") & "#") if Sum < 8 Then dr("带薪工时判断条件_星期几为0_带薪工时值") = 8 Else dr("带薪工时判断条件_星期几为0_带薪工时值") = Nothing End If End If Next |
||||
-- 作者:wqc360 -- 发布时间:2010/3/25 13:54:00 -- 多谢C版,星期天的搞定,有了您的示范,我试试看能不能把节假日的代码给套出来。 |
||||
-- 作者:wqc360 -- 发布时间:2010/3/25 15:12:00 -- C版您好,怎么我把代码放到项目里就不行,在示范文件里好好的,是不是项目数据太多。只要我一点重算列,就死机,我用开发板的示范文件也试了,正常。项目文件表的DataColChanged代码如下:应该没有冲突呀 Dim dr As DataRow = e.DataRow Dim dt As DataTable = DataTables("班组考勤") Dim str As String = "日期 = \'" & dr("日期") & "\' And 姓名 = \'" & dr("姓名") & "\'" if e.DataCol.Name = "日期" OrElse e.DataCol.Name = "姓名" Then Dim r As DataRow = dt.Find(str) if r IsNot Nothing Then dr("班组考勤工时_出勤")=(dt.Compute("Sum(班组考勤工时_出勤)",str)) dr("班组考勤工时_请假")=(dt.Compute("Sum(班组考勤工时_请假)",str)) dr("班组考勤工时_旷工")=(dt.Compute("Sum(班组考勤工时_旷工)",str)) dr("考核_装夹工时") = (dt.Compute("Sum(考核_装夹工时)",str)) dr("考核_操作工时") = (dt.Compute("Sum(考核_操作工时)",str)) dr("考核_准结工时") = (dt.Compute("Sum(考核_准结工时)",str)) dr("考核_标准工时")=(dt.Compute("Sum(考核_标准工时)",str)) dr("考核_奖金")=(dt.Compute("Sum(考核_奖金)",str)) dr("工作用时")=(dt.Compute("Sum(工作用时)",str)) dr("工废损失")=(dt.Compute("Sum(工废损失)",str)) dr("准结补贴")=(dt.Compute("Sum(准结补贴)",str)) dr("工资")=(dt.Compute("Sum(工资)",str)) dr("产值")=(dt.Compute("Sum(产值)",str)) dr("奖金小计")=(dt.Compute("Sum(奖金小计)",str)) End If End If Select Case e.DataCol.Name Case "考核_准结工时","考核_标准工时","工作用时" dr("考核_效率")=(dr("考核_标准工时")+dr("考核_准结工时"))/dr("工作用时") Case "主管考勤工时_出勤" Select Case dr("主管考勤工时_出勤") Case 0.1 To 8 Select Case dr("星期几") Case 0 dr("加班工时") = dr("主管考勤工时_出勤") dr("正班工时") = dr("主管考勤工时_出勤") Case 1 To 6 dr("正班工时") = dr("主管考勤工时_出勤") dr("加班工时") = Nothing Case 8 dr("正班工时") = dr("主管考勤工时_出勤") dr("加班工时") = dr("主管考勤工时_出勤")*2 End Select Case 8.01 To 24 Select Case dr("星期几") Case 0 dr("加班工时") = dr("主管考勤工时_出勤")*2-8 dr("正班工时") = "8" Case 1 To 6 dr("加班工时") = (dr("主管考勤工时_出勤")-8)*1.5 dr("正班工时") = "8" Case 8 dr("正班工时") = "8" dr("加班工时") = dr("主管考勤工时_出勤")*3-8 End Select End Select End Select If e.DataCol.Name = "确定" Then \'如果是已结帐列的内容变动 If e.NewValue = True Then \'而且变动后的值是True(已勾选) e.DataRow.Locked = True \'那么锁定此行 End If End If if e.datacol.name = "日期" e.datarow("年月") = format(e.datarow("日期"),"yyyy年MM月") e.datarow("日") = e.datarow("日期").day Dim dr1 As DataRow = DataTables("基础表").Find("[节假日期] = \'" & e.DataRow("日期") & "\'") If dr1 IsNot Nothing Then e.DataRow("星期几") = "8" Else e.datarow("星期几") = e.datarow("日期").DayOfWeek End If end if 以前的代码运行都正常,加上以下这段就不行 Dim dt1 As DataTable = DataTables("主管考勤") For Each dr2 As DataRow In dt1.DataRows if dr2("星期几") = 0 Then Dim d1 as Date = dr2("日期") Dim Sum As Integer = dt1.Compute("Sum(主管考勤工时_请假)","姓名 = \'" & dr2("姓名") & "\' And 日期 >= #" & d1.AddDays(-6) & "# And 日期 <= #" & dr2("日期") & "#") if Sum < 8 Then dr2("节假日带薪工时") = 8 Else dr2("节假日带薪工时") = Nothing End If Else dr2("节假日带薪工时") = Nothing End If Next [此贴子已经被作者于2010-3-25 15:15:35编辑过]
|