Foxtable(狐表)用户栏目专家坐堂 → 汇总本月数


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

主题:汇总本月数

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
汇总本月数  发帖心情 Post By:2016/8/31 18:00:00 [只看该作者]

For Each c As DataCol In e.DataTable.DataCols

Dim Dowss As DataRow (of List) = e.DataTable.Select("摘要 = '本月合计'")
        Dim year As Integer = e.DataTable.find("摘要 = '本月合计'")("日期").Year
        Dim month As Integer =e.DataTable.find("摘要 = '本月合计'")("日期").Month
        Dim Date1 As Date = new Date(year,month,1)
        Dim Date2 As Date = new Date(year,month,Date.DaysInMonth(year,month))
        msgbox(Date2)
        e.DataTable.find("摘要 = '本月合计'and 日期 = '" & Date2 &"'")(c.name) = e.DataTable.Compute("sum(c.name)","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'")
        msgbox(5)

next
以上代码是实现本月合计行对本月数据的合计


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


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/1 8:47:00 [只看该作者]

Dim Dowss As List(of DataRow) = e.DataTable.find("摘要 = '本月合计'")
For Each dr As DataRow In Dowss
    Dim year As Integer = dr("日期").Year
    Dim month As Integer = dr("日期").Month
    Dim Date1 As Date = new Date(year,month,1)
    Dim Date2 As Date = new Date(year,month,Date.DaysInMonth(year,month))
    For Each c As DataCol In e.DataTable.DataCols
        
        dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'")
    Next
Next

这种直接用汇总或者分组统计好了


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 12:13:00 [只看该作者]

此例子中有一个明细,想按月汇总,以下代码是那里出错了

If e.DataCol.Name = "摘要" AndAlso e.DataRow("摘要") = "本月合计" Then
    Dim Dowss As List(of DataRow) = e.DataTable.Select("摘要 = '本月合计'")
    For Each dr As DataRow In Dowss
        Dim year As Integer = dr("日期").Year
        Dim month As Integer = dr("日期").Month
        Dim Date1 As Date = new Date(year,month,1)
        Dim Date2 As Date = new Date(year,month,Date.DaysInMonth(year,month))
        For Each c As DataCol In e.DataTable.DataCols
            If c.IsNumeric Then
                msgbox(Date1)
                msgbox(Date2)
                'dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'and 摘要 <> '本月合计'")
                dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'")
                msgbox(dr(c.name))
            End If
        Next
    Next
End If


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 12:13:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.foxdb


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 12:14:00 [只看该作者]

'dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'and 摘要 <> '本月合计'")换成此句代码时,值就为了零了,不知道什么原因?

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


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/1 14:26:00 [只看该作者]

If e.DataCol.Name = "摘要" AndAlso e.DataRow("摘要") = "本月合计" Then
    Dim Dowss As List(of DataRow) = e.DataTable.Select("摘要 = '本月合计'")
    For Each dr As DataRow In Dowss
        Dim year As Integer = dr("日期").Year
        Dim month As Integer = dr("日期").Month
        Dim Date1 As Date = new Date(year,month,1)
        Dim Date2 As Date = new Date(year,month,Date.DaysInMonth(year,month))
        For Each c As DataCol In e.DataTable.DataCols
            If c.IsNumeric Then
                'msgbox(Date1)
                'msgbox(Date2)
                'dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "'and 摘要 <> '本月合计'")
                dr(c.name) = Nothing
                dr(c.name) = e.DataTable.Compute("sum(" & c.name & ")","日期 >= '" & Date1 & "' and 日期 <= '" & Date2 & "' ")
            End If
        Next
    Next
End If

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 16:33:00 [只看该作者]

Select Case e.DataCol.Name
    Case "汇总_借方金额","汇总_贷方金额"
        For Each dr As DataRow In e.DataTable.Select("[_SortKey] >= " & e.DataRow("_SortKey"))
            Dim Val1 As Double = e.DataTable.Compute("Sum(汇总_借方金额)","[_SortKey] <= " & dr("_SortKey") & " And 摘要 <> '本月合计'")
msgbox(val1)
            Dim Val2 As Double = e.DataTable.Compute("Sum(汇总_贷方金额)","[_SortKey] <= " & dr("_SortKey") & " And 摘要 <> '本月合计'")
           dr("汇总_余额") = Val1 + Val2
        Next
End Select

以上代码是流水账代码,黄水代码错误在那里,为什么求不出来值?


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


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/1 16:53:00 [只看该作者]

摘要 <> '本月合计'是会排除空值的,

Select Case e.DataCol.Name
    Case "汇总_借方金额","汇总_贷方金额"
        For Each dr As DataRow In e.DataTable.Select("[_SortKey] >= " & e.DataRow("_SortKey"))
            Dim Val1 As Double = e.DataTable.Compute("Sum(汇总_借方金额)","[_SortKey] <= " & dr("_SortKey") & " And  (摘要 <> '本月合计'or 摘要 is null)")
msgbox(val1)
            Dim Val2 As Double = e.DataTable.Compute("Sum(汇总_贷方金额)","[_SortKey] <= " & dr("_SortKey") & " And 
 (摘要 <> '本月合计'or 摘要 is null)")

           dr("汇总_余额") = Val1 + Val2
        Next
End Select


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 20:18:00 [只看该作者]

例子中的明细表,希望实现本年累计、本月合计及余额自动计算,里面怎么修改?

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/9/1 20:18:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目16.foxdb


 回到顶部
总数 17 1 2 下一页