以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计转移  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92432)

--  作者:yangwenghd
--  发布时间:2016/11/3 11:29:00
--  统计转移
可以把两个表统计的数据按照月份分别复制到统计表格吗
然后如果没有数据就默认为0
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计.table

统计表格 预留价格和预留单价 得到统计日期当月的最后一行, 感谢 感谢
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20161103112552.jpg
图片点击可在新窗口打开查看
 

--  作者:有点蓝
--  发布时间:2016/11/3 11:48:00
--  
参考:http://www.foxtable.com/webhelp/scr/2305.htm
--  作者:yangwenghd
--  发布时间:2016/11/3 12:04:00
--  
感谢 感谢 看懂了一下, 只是这个时间怎么对应啊?感谢 感谢 
--  作者:有点青
--  发布时间:2016/11/3 12:05:00
--  

Dim dt_tj As DataTable = DataTables("统计")
Dim dt_dd As DataTable = DataTables("订单")
Dim dt_zc As DataTable = DataTables("支出")

dt_tj.DataRows.Clear
Dim minDD As Date = dt_dd.compute("min(日期)")
Dim minZC As Date = dt_zc.compute("min(日期)")
Dim maxDD As Date = dt_dd.compute("max(日期)")
Dim maxZC As Date = dt_zc.compute("max(日期)")

Dim minDate As Date = iif(minDD<minZC, minDD, minZC)
Dim maxDate As Date = iif(maxDD>maxZC, maxDD, maxZC)

For i As Integer = minDate.Year To maxDate.Year
    For j As Integer = 1 To 12
        Dim ndr As DataRow = dt_tj.AddNew
        Dim d As Date = new Date(i, j, 1)
        Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
        ndr("年份") = i
        ndr("月份") = j
        ndr("订单_数量") = dt_dd.compute("sum(数量)", filter)
        ndr("订单_价格") = dt_dd.compute("sum(价格)", filter)
        Dim fdr As DataRow = dt_dd.Find(filter, "日期 desc")
        If fdr IsNot Nothing Then
            ndr("订单_预留价格") = fdr("预留价格")
        Else
            ndr("订单_预留价格") = 0
        End If
        ndr("支出_数量") = dt_zc.compute("sum(次数)", filter)
        ndr("支出_单价") = dt_zc.compute("sum(单价)", filter)
        fdr = dt_zc.Find(filter, "日期 desc")
        If fdr IsNot Nothing Then
            ndr("支出_预留单价") = fdr("预留单价")
        Else
            ndr("支出_预留单价") = 0
        End If
    Next
Next


--  作者:yangwenghd
--  发布时间:2016/11/3 12:12:00
--  
If fdr IsNot Nothing Then
            ndr("订单_数量") = dt_dd.compute("sum(数量)", filter)
        Else
            ndr("数量") = 0
        End If  
感谢 
感谢  为什么之前没看见 fdr 声明  再加上一个就不能用了呢 

可以让其他几列没有数据的时候也默认为0吗
感谢 感谢 
[此贴子已经被作者于2016/11/3 12:16:06编辑过]

--  作者:有点青
--  发布时间:2016/11/3 12:25:00
--  

Dim dt_tj As DataTable = DataTables("统计")
Dim dt_dd As DataTable = DataTables("订单")
Dim dt_zc As DataTable = DataTables("支出")

dt_tj.DataRows.Clear
Dim minDD As Date = dt_dd.compute("min(日期)")
Dim minZC As Date = dt_zc.compute("min(日期)")
Dim maxDD As Date = dt_dd.compute("max(日期)")
Dim maxZC As Date = dt_zc.compute("max(日期)")

Dim minDate As Date = iif(minDD<minZC, minDD, minZC)
Dim maxDate As Date = iif(maxDD>maxZC, maxDD, maxZC)

For i As Integer = minDate.Year To maxDate.Year
    For j As Integer = 1 To 12
        Dim ndr As DataRow = dt_tj.AddNew
        Dim d As Date = new Date(i, j, 1)
        Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
        ndr("年份") = i
        ndr("月份") = j
        ndr("订单_数量") = val(dt_dd.compute("sum(数量)", filter))
        ndr("订单_价格") = val(dt_dd.compute("sum(价格)", filter))
        Dim fdr As DataRow = dt_dd.Find(filter, "日期 desc")
        If fdr IsNot Nothing Then
            ndr("订单_预留价格") = fdr("预留价格")
        Else
            ndr("订单_预留价格") = 0
        End If
        ndr("支出_数量") = val(dt_zc.compute("sum(次数)", filter))
        ndr("支出_单价") = val(dt_zc.compute("sum(单价)", filter))
        fdr = dt_zc.Find(filter, "日期 desc")
        If fdr IsNot Nothing Then
            ndr("支出_预留单价") = fdr("预留单价")
        Else
            ndr("支出_预留单价") = 0
        End If
    Next
Next


--  作者:yangwenghd
--  发布时间:2016/11/3 12:43:00
--  
感谢你 谢谢 
--  作者:yangwenghd
--  发布时间:2016/11/3 17:59:00
--  
Dim minDate As Date = iif(minDD<minZC, minDD, minZC)
Dim maxDate As Date = iif(maxDD>maxZC, maxDD, maxZC)
这段是什么意思啊  感谢 感谢 

 Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"
这段日期 是只的什么日期啊  感谢 感谢 
[此贴子已经被作者于2016/11/3 18:20:45编辑过]

--  作者:有点色
--  发布时间:2016/11/3 18:31:00
--  
以下是引用yangwenghd在2016/11/3 17:59:00的发言:
Dim minDate As Date = iif(minDD<minZC, minDD, minZC)
Dim maxDate As Date = iif(maxDD>maxZC, maxDD, maxZC)
这段是什么意思啊  感谢 感谢 

 

获取需要统计的年月。获取订单的最大最小年月,获取支出的最大最小年月,得到两者的最大最小年月。


--  作者:yangwenghd
--  发布时间:2016/11/3 18:53:00
--  
我可以在问一个问题吗?
是这样的,现在又添加了几个表,然后他们的日期列的名称都不同 
就不知道 那几项该怎么改了
感谢 感谢