Foxtable(狐表)用户栏目专家坐堂 → 【求助跨年计算】想实现在2018年1月份来计算2017年12月数据,总是报错,求解!


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

主题:【求助跨年计算】想实现在2018年1月份来计算2017年12月数据,总是报错,求解!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【求助跨年计算】想实现在2018年1月份来计算2017年12月数据,总是报错,求解!  发帖心情 Post By:2018/1/5 13:18:00 [显示全部帖子]

【求助跨年计算】想实现在2018年1月份来计算2017年12月数据,总是报错,求解!
.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.10.26.1
错误所在事件:表,员工薪资,DataColChanged
详细错误信息:
调用的目标发生了异常。
年、月和日参数描述无法表示的 DateTime。

代码如下:
经过测试发现红色部分报错
如2018年1月5日  要计算2017年12月的数据  提示报错
如2018年2月5日  要计算2018年1月的数据   可以计算
当前问题主要几种在某年12月至某年1月之间  怎么完美解决呢?


Select  e.DataCol.Name
    Case  "姓名"
        
        e.DataRow("发放状态")="未发放"
        Dim filter As String = "(员工 = '"  & e.DataRow("姓名") & "')"
        Dim y As Integer = Date.Today.Year
        Dim m As Integer = Date.Today.Month -1
        'MessageBox.Show(m)
        Dim dt1 As New Date(y, m, 1)
        Dim dt2 As New Date(y, m, Date.DaysInMonth(y,m)) '获取该月的最后一天
        Dim Filterdate As String
        Filterdate = "考勤日期 >= #" & dt1 & "# And 考勤日期 <= #" & dt2 & "#"
        
        Dim dr As DataRow
        dr = DataTables("员工表").Find("姓名 = '"  & e.DataRow("姓名") & "'")
        If dr IsNot Nothing '如果找到, 则设置各列内容
            e.DataRow("部门")=dr("所属门店")
        End If
        e.DataRow("日期")=Date.Today
        'e.DataRow("年")=Date.Today.Year
        'e.DataRow("月")=Date.Today.Month -1
        
        Dim m1 As Integer = Date.Today.Month - 1
        Dim n1 As Integer = Date.Today.Year
        
        If m1<1 Then
            e.DataRow("月")= m1 +1
            e.DataRow("年")=n1
        Else
            e.DataRow("月")= m1
            e.DataRow("年")=n1
        End If

        
        Dim dr1 As DataRow
        dr1 = DataTables("基础薪资").Find("姓名 = '"  & e.DataRow("姓名") & "'")
        If dr1 IsNot Nothing '如果找到, 则设置各列内容
            e.DataRow("基础工资")=dr1("基础工资")
            e.DataRow("话费补贴")=dr1("话费补贴")
            e.DataRow("交通补贴")=dr1("交通补贴")
            e.DataRow("工龄补贴")=dr1("工龄补贴")
            e.DataRow("其他补贴")=dr1("其他补贴")
            
        End If
        Dim filter1 As String = "(考勤人员 = '"  & e.DataRow("姓名") & "' and 考勤类别 = '迟到登记' )"
        e.DataRow("扣款_迟到次数") = DataTables("员工考勤").compute("count(考勤编号)", filter1  & " and 考勤日期 >= #" & dt1 & "# And 考勤日期 <= #" & dt2 & "#")
        If e.DataRow("扣款_迟到次数") >=1  Then
            e.DataRow("奖金_满勤奖")=0
            e.DataRow("扣款_迟到扣款")=e.DataRow("扣款_迟到次数") *e.DataRow("扣款_迟扣标准")
        Else
            e.DataRow("奖金_满勤奖")=dr1("满勤奖")
        End If
        
        Dim filter11 As String = "(考勤人员 = '"  & e.DataRow("姓名") & "' and 考勤类别 = '旷工登记' )"
        e.DataRow("扣款_旷工次数") = DataTables("员工考勤").compute("count(考勤编号)", filter11  & " and 考勤日期 >= #" & dt1 & "# And 考勤日期 <= #" & dt2 & "#")
        If e.DataRow("扣款_旷工次数") >=1  Then
            e.DataRow("奖金_满勤奖")=0
            e.DataRow("扣款_旷工扣款")=e.DataRow("扣款_旷工次数") *e.DataRow("扣款_旷扣标准")
        Else
            e.DataRow("奖金_满勤奖")=dr1("满勤奖")
        End If
        
        Dim filter111 As String = "(考勤人员 = '"  & e.DataRow("姓名") & "' and 考勤类别 = '请假登记' )"
        e.DataRow("扣款_请假次数") = DataTables("员工考勤").compute("count(考勤编号)", filter111 & " and 考勤日期 >= #" & dt1 & "# And 考勤日期 <= #" & dt2 & "#")
        If e.DataRow("扣款_请假次数") >=1  Then
            e.DataRow("奖金_满勤奖")=0
            e.DataRow("扣款_请假扣款")=e.DataRow("扣款_请假次数") *e.DataRow("扣款_请假标准")
        Else
            e.DataRow("奖金_满勤奖")=dr1("满勤奖")
        End If
        e.DataRow("扣款_任务额度") = DataTables("订单主表").compute("sum(订单总额)", filter  & " And 订单日期 >= #" & dt1 & "# And 订单日期 <= #" & dt2 & "#")
        e.DataRow("实发工资")=(e.DataRow("基础工资")+e.DataRow("话费补贴")+e.DataRow("交通补贴")+e.DataRow("工龄补贴")+e.DataRow("其他补贴")+e.DataRow("奖金_满勤奖")+e.DataRow("奖金_超量奖")+e.DataRow("奖金_超额奖"))-(e.DataRow("扣款_迟到扣款")+e.DataRow("扣款_旷工扣款")+e.DataRow("扣款_请假扣款")+e.DataRow("扣款_未完单扣")+e.DataRow("扣款_未达额扣")+e.DataRow("代扣_伙食")+e.DataRow("代扣_其它"))
        
    Case "代扣_伙食","代扣_其它"
        e.DataRow("实发工资")=(e.DataRow("基础工资")+e.DataRow("话费补贴")+e.DataRow("交通补贴")+e.DataRow("工龄补贴")+e.DataRow("其他补贴")+e.DataRow("奖金_满勤奖")+e.DataRow("奖金_超量奖")+e.DataRow("奖金_超额奖"))-(e.DataRow("扣款_迟到扣款")+e.DataRow("扣款_旷工扣款")+e.DataRow("扣款_请假扣款")+e.DataRow("扣款_未完单扣")+e.DataRow("扣款_未达额扣")+e.DataRow("代扣_伙食")+e.DataRow("代扣_其它"))
        

End Select
[此贴子已经被作者于2018/1/5 13:18:55编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)请用 addmonths(-1) 得到上一个月&...  发帖心情 Post By:2018/1/5 15:05:00 [显示全部帖子]

有点甜老师  按照楼上方法 还是不得解决  附上例子 求解!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:博航建材1215.rar



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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim y As Integer = Date.Today.Year...  发帖心情 Post By:2018/1/5 15:55:00 [显示全部帖子]

有点甜老师 更改之后问题依旧!还得麻烦多多指导 谢谢

 回到顶部