以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]为什么有时统计不到31号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122084)

--  作者:js4222
--  发布时间:2018/7/18 17:06:00
--  [求助]为什么有时统计不到31号
代码如下
If e.DataCol.Name = "姓名" Then
    If e.NewValue Is Nothing Then
        e.DataRow("抽成") = Nothing
        e.DataRow("借支") = Nothing
    Else
        Dim Filter As String = "[姓名] = \'" & e.NewValue & "\'"
        Dim m As Integer = e.DataRow("日期").Month
        Dim y As Integer = e.DataRow("日期").Year
        Dim dt1 As New Date(y, m, 1)
        Dim dt2 As New Date(y, m, Date.DaysInMonth(y, m)) 
        Filter = filter & " and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
        e.DataRow("抽成") = DataTables("抽成").Compute("Sum(抽成)",Filter)
        e.DataRow("借支") = DataTables("借支表").sqlCompute("Sum(金额)",Filter)
    End If
End If

表测试的时候,这个代码没有问题,但是5月份的时候客户反映借支金额只能统计30号以内的,31号的完全统计不到,以我的能力,完全查不出问题出在哪里
各位大佬帮忙看看

--  作者:有点甜
--  发布时间:2018/7/18 17:56:00
--  

代码改成

 

        Dim dt1 As New Date(y, m, 1)
        Dim dt2 As Date = dt1.AddMonths(1) 
        Filter = filter & " and 日期 >= #" & dt1 & "# And 日期 < #" & dt2 & "#"

--  作者:js4222
--  发布时间:2018/7/18 19:57:00
--  
以下是引用有点甜在2018/7/18 17:56:00的发言:

代码改成

 

        Dim dt1 As New Date(y, m, 1)
        Dim dt2 As Date = dt1.AddMonths(1) 
        Filter = filter & " and 日期 >= #" & dt1 & "# And 日期 < #" & dt2 & "#"

这个的话是统计到下个月1号吧,那是不是下个月1号也会被统计下去?
有另外一个工资计算表,计算工资的时候,选择姓名,日期,自动统计出该日期的月份工资。
如果是下个月1号也统计下去,那就又有新的问题出现了

[此贴子已经被作者于2018/7/18 20:00:21编辑过]

--  作者:js4222
--  发布时间:2018/7/18 20:32:00
--  
有没有跟我碰到同样情况的,支招一下,最后是如何解决的
--  作者:有点甜
--  发布时间:2018/7/18 20:48:00
--  
以下是引用js4222在2018/7/18 20:32:00的发言:
有没有跟我碰到同样情况的,支招一下,最后是如何解决的

 

不会统计你1号的数据啊,改成2楼代码不可能有问题的。请认真理解逻辑。


--  作者:js4222
--  发布时间:2018/7/18 21:54:00
--  
以下是引用有点甜在2018/7/18 20:48:00的发言:

 

不会统计你1号的数据啊,改成2楼代码不可能有问题的。请认真理解逻辑。


额,看错了。我的是<= 你的是<

没注意看