Foxtable(狐表)用户栏目专家坐堂 → [讨论]年度统计


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

主题:[讨论]年度统计

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/23 9:58:00 [显示全部帖子]

1、加入msgbox,看是否进入执行了代码;

 

2、例子发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/23 13:24:00 [显示全部帖子]

以下是引用江南小镇在2017/10/23 12:55:00的发言:
老师,我要从进销存表中把筛选后的每个年度、来源、客户列的字段引用到统计表中,

 

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT DISTINCT year(日期) as 年, 编号,数量 from {表C}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.datarows
    output.show(dr("年"))
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/23 15:18:00 [显示全部帖子]

参考5楼代码。不会写,上传具体例子测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/23 15:55:00 [显示全部帖子]

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim t As Table = Tables("进销存")
Dim filter = iif(t.filter > "", t.filter, "1=1")
cmd.CommandText = "SELECT DISTINCT year(日期) as 年, 来源,客户ID,客户名称 from {进销存} where " & filter
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.datarows
    Dim ndr As DataRow = DataTables("年度统计").addnew
    ndr("年份") = dr("年")
    ndr("来源") = dr("来源")
    ndr("客户名称") = dr("客户名称")
Next

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/24 10:07:00 [显示全部帖子]

If e.DataCol.name = "年份" OrElse e.DataCol.name = "客户名称" Then
    If e.DataRow.Isnull("年份") = False AndAlso e.DataRow.Isnull("客户名称") = False Then
        Dim filter1 As String = "客户 = '" & e.DataRow("客户名称") & "'"
        Dim filter2 As String = "客户名称 = '" & e.DataRow("客户名称") & "'"

        For i As Integer = 1 To 12
            Dim d As Date = new Date(val(e.DataRow("年份")), i, 1)
            Dim sum As Integer = DataTables("出库明细").compute("sum(出库_价税合计)", filter1 & " and 出库日期 >= #" & d & "# and 出库日期 < #" & d.addmonths(1) & "#")
            Dim sum1 As Integer = DataTables("入库明细").compute("sum(合计金额)", filter2 & " and 入库日期 >= #" & d & "# and 入库日期 < #" & d.addmonths(1) & "#")

            e.DataRow("M" & i) = sum
        Next
    Else
        For i As Integer = 1 To 12
            e.DataRow("M" & i) = Nothing
        Next
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/24 12:17:00 [显示全部帖子]

e.DataRow("M" & i) = sum

 

改成

 

e.DataRow("M" & i) = sum + sum1


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/10/24 14:24:00 [显示全部帖子]

Dim cmd5 As New SQLCommand
Dim dt As DataTable
cmd5.ConnectionName = "数据库"
Dim t5 As Table = Tables("进销存")

Dim filter = iif(t5.filter > "", t5.filter, "1=1")
cmd5.CommandText = "SELECT DISTINCT year(日期) as 年, 来源,客户ID,客户名称 from {进销存} where " & filter
dt = cmd5.ExecuteReader()
For Each dr As DataRow In dt.datarows
    filter = "年份 = '" & dr("年") & "' and 来源 = '" & dr("来源") & "' and 客户名称 = '" & dr("客户名称") & "'"
    Dim ndr As DataRow = DataTables("年度统计").find(filter)
    If ndr Is Nothing Then
        ndr = DataTables("年度统计").addnew
    End If
    ndr("年份") = dr("年")
    ndr("来源") = dr("来源")
    ndr("客户名称") = dr("客户名称")
Next


 回到顶部