Foxtable(狐表)用户栏目专家坐堂 → 判断节假日是否应带薪(狐爸帮我看看好吗)


  共有17071人关注过本帖树形打印复制链接

主题:判断节假日是否应带薪(狐爸帮我看看好吗)

帅哥哟,离线,有人找我吗?
czy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 1:28:00 [显示全部帖子]

我写了一个流程语句,不知道理解的对不对?

Dim dt As DataTable = DataTables("考勤")
For Each dr As DataRow In dt.DataRows
    Dim d1 as Date = dr("日期")
    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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 1:31:00 [显示全部帖子]

你的问题说老实话很难理解,所以我只写了一个判断请假工时的。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 15:42:00 [显示全部帖子]

呵呵,这样肯定不行的,我写的是流程语句是按钮代码,是一次性重算的。
放到事件中你要舍弃循环语句,改成e.DataRow,这样才可以只计算触动行

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 15:44:00 [显示全部帖子]

改成这样看看?

Dim dt1 As DataTable = e.DataTables
Dim dr2 As DataRow = e.Datarow
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

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 15:45:00 [显示全部帖子]

楼上的代码没经过测试的,你测试一下看看行不行?

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/25 17:26:00 [显示全部帖子]

那你就改成DataTables("主管考勤")


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/26 1:12:00 [显示全部帖子]

以下是引用wqc360在2010-3-25 23:34:00的发言:
星期天的带薪工时代码测试已Ok,谢谢C版和狐爸,我是把10楼的红色代码改成如下:
 

Dim dt1 As DataTable = DataTables("主管考勤")

if dr("星期几") = 0 Then

    Dim d1 as Date = dr("日期")

    Dim Sum As Integer = dt1.Compute("Sum(主管考勤工时_请假)","姓名 = '" & dr("姓名") & "' And 日期 >= #" & d1.AddDays(-6) & "# And 日期 <= #" & dr("日期") & "#")

    if Sum < 8 Then

        dr("节假日带薪工时") = 8

    Else

        dr("节假日带薪工时") = Nothing

    End If

Else

    dr("节假日带薪工时") = Nothing

End If
但是自从运行了10楼的代码,到现在一直出现保存时提示出错,提示窗口见15楼,保存代码我用:
 

Ctype(ApplicationMenu.LeftItems("Save"), RibbonMenu.Button).PerformClick()


For
Each dt As DataTable In DataTables

    dt.Save()'保存所有数据

Next



两个都一样,不知是怎么回事。


压缩项目,删除Catch文件夹,重启项目。


 回到顶部