Foxtable(狐表)用户栏目专家坐堂 → 统计


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

主题:统计

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
统计  发帖心情 Post By:2018/3/10 15:24:00 [只看该作者]

Dim g As New CrossTableBuilder("统计表1", DataTables("客户发砖总表"))

        Dim cg As fxDataSource

        g.HGroups.AddDef("司机") 

        g.HGroups.AddDef("日期",DateGroupEnum.Year, "年")

        g.HGroups.AddDef("日期", "月")

        g.Totals.AddDef("本次运费","订砖发货_运费")

        'g.Totals.AddDef("日期",AggregateEnum.Count,"订单数")

        g.Totals.AddDef("已发数量","订砖发砖_数量")

        g.HorizontalTotal = True

        g.VerticalTotal = True

        g.Build()

        cg=g.BuildDataSource

 

        Tables("司机运费_Table1").DataSource = cg

        Dim s As New CrossTableBuilder("统计表1", DataTables("赊销销砖总表"))

        Dim sg As fxDataSource

        s.HGroups.AddDef("司机")

        s.HGroups.AddDef("日期",DateGroupEnum.Year, "")

        s.HGroups.AddDef("日期", "")

        s.Totals.AddDef("本次运费","赊砖_运费")

        'g.Totals.AddDef("日期",AggregateEnum.Count,"订单数")

        s.Totals.AddDef("赊砖数量","赊砖_发砖数量")

        s.HorizontalTotal = True

        s.VerticalTotal = True

        s.Build()

        sg=s.BuildDataSource

老师,我这是两段代码,怎么能合成一段代码显示结果了


此主题相关图片如下:777.png
按此在新窗口浏览图片

上图中,只显示了该司机关于赊砖的运费和发货数量,我要显示的运费发货数量还要包括客户订砖发货单的司机的运费、发砖数量,请老师指点



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


加好友 发短信
等级:超级版主 帖子:112364 积分:572076 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/3/10 15:34:00 [只看该作者]


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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
  发帖心情 Post By:2018/3/10 23:38:00 [只看该作者]


此主题相关图片如下:888.png
按此在新窗口浏览图片

老师,我这里赊销销砖总表不能按年月分组,且当该司机订砖发货如果没有数据,就出现了年月显示不出来年月的结果,按司机分组这个结果出来,赊销销砖按年月不能出来  fz.combine("日期",lx,"日期")

'fz.combine("",lx,"")这个表达式怎么处理,请老师赐教

 

下面是代码

DataTables("客户发砖总表").LoadFilter =""

DataTables("客户发砖总表").Load

DataTables("赊销销砖总表").LoadFilter =""

DataTables("赊销销砖总表").Load

Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))

Dim fz As fxDataSource

bd1.Groups.AddDef("日期",DateGroupEnum.Year,"") '添加日期列用于分组,并用""代替原名称

bd1.Groups.AddDef("日期","")

bd1.Groups.AddDef("司机")

bd1.Totals.AddDef("本次运费","订砖发货_运费")

bd1.Totals.AddDef("已发数量","订砖发货_数量")

fz=bd1.BuildDataSource

 

Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))

Dim lx As fxDataSource

'bd2.Groups.AddDef("日期",DateGroupEnum.Year,"") '添加日期列用于分组,并用""代替原名称

'bd2.Groups.AddDef("日期","")

bd2.Groups.AddDef("司机")

bd2.Totals.AddDef("本次运费","赊销销砖_运费")

bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")

lx=bd2.BuildDataSource

fz.combine("司机",lx,"司机")

'fz.combine("日期",lx,"日期")

'fz.combine("",lx,"")

 

Tables("司机运费_Table1").DataSource =fz

With DataTables("司机运费_Table1").DataCols '用表达式计算合计

    .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")

    .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")

End With

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/11 20:42:00 [只看该作者]

请上传具体foxtable项目说明你的问题。

 

如果是多列的链接,参考 http://www.foxtable.com/webhelp/scr/2392.htm

 


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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
  发帖心情 Post By:2018/3/11 21:46:00 [只看该作者]

bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") 
bd1.Groups.AddDef("日期","月")


Dim nms As String() = {"司机"} '指定连接列
fz.Combine(nms,lx,nms)   

这个统计表,是按 年,月,司机 分组,现在就是 年、月 是通过日期取得值,现在就是,年、月 这个怎么表达呢,我试过了,年、月 不能直接写在司机的前面,试了几下都不行

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/11 22:29:00 [只看该作者]

执行下面代码,如果有问题,上传实例测试。

 

DataTables("客户发砖总表").LoadFilter =""
DataTables("客户发砖总表").Load
DataTables("赊销销砖总表").LoadFilter =""
DataTables("赊销销砖总表").Load
Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))
Dim fz As fxDataSource
bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
bd1.Groups.AddDef("日期","月")
bd1.Groups.AddDef("司机")
bd1.Totals.AddDef("本次运费","订砖发货_运费")
bd1.Totals.AddDef("已发数量","订砖发货_数量")
fz=bd1.BuildDataSource
 
Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))
Dim lx As fxDataSource
bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
bd2.Groups.AddDef("日期","月")
bd2.Groups.AddDef("司机")
bd2.Totals.AddDef("本次运费","赊销销砖_运费")
bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")
lx=bd2.BuildDataSource

Dim nms As String() = {"年","月","司机"} '指定连接列
fz.Combine(nms,lx,nms)  

Tables("司机运费_Table1").DataSource =fz

With DataTables("司机运费_Table1").DataCols '用表达式计算合计

    .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")

    .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")

End With


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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
  发帖心情 Post By:2018/3/12 1:45:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看


谢谢老师,上面的那个问题解决了
现在的问题:
1、总计行我已写了代码,可是只有订砖发货有总计行,后面的数据却合计不出来
2、按条件查询
   日期,司机选择了之后,点查询下拉框里的按条件查询,出来不了结果

我的代码 写在 查询的 SelectedIndexChanged 事件中

窗体在  财务管理----司机运费

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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
  发帖心情 Post By:2018/3/12 1:46:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:砖厂.rar


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


加好友 发短信
等级:一尾狐 帖子:470 积分:3641 威望:0 精华:0 注册:2017/11/5 14:47:00
  发帖心情 Post By:2018/3/12 1:50:00 [只看该作者]

Dim Value As String =e.Sender.SelectedValue
e.Form.Controls("Table1").Visible = True
Select Case Value
    Case "全部"
        DataTables("客户发砖总表").LoadFilter =""
        DataTables("客户发砖总表").Load
        DataTables("赊销销砖总表").LoadFilter =""
        DataTables("赊销销砖总表").Load
        Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))
        Dim fz As fxDataSource
        bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd1.Groups.AddDef("日期","月")
        bd1.Groups.AddDef("司机")
        bd1.Totals.AddDef("本次运费","订砖发货_运费")
        bd1.Totals.AddDef("已发数量","订砖发货_数量")
        
        bd1.Subtotal = True  '开启垂直汇总模式
        bd1.SubtotalLevel = 0  '只生成总计行
        fz=bd1.BuildDataSource
        
        Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))
        Dim lx As fxDataSource
        bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd2.Groups.AddDef("日期","月")
        bd2.Groups.AddDef("司机")
        bd2.Totals.AddDef("本次运费","赊销销砖_运费")
        bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")
 bd2.Subtotal = True  '开启垂直汇总模式
        bd2.SubtotalLevel = 0  '只生成总计行
        lx=bd2.BuildDataSource
        
        
        
        Dim nms As String() = {"年","月","司机"} '指定连接列
        fz.Combine(nms,lx,nms)
        
        
        Tables("司机运费_Table1").DataSource =fz
        
        With DataTables("司机运费_Table1").DataCols '用表达式计算合计
            
            .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")
            
            .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")
            
        End With
    Case "按条件查询"
        Dim Filter As String
Dim bd1 As New GroupTableBuilder("统计表1", DataTables("司机运费_Table1"))
        With e.Form.Controls("司机")
            If .Value IsNot Nothing Then
                Filter = "司机 = '" & .Value & "'"
            End If
        End With
        
        With e.Form.Controls("StartDate")
            If .Value IsNot Nothing Then
                If Filter >"" Then
                    Filter = Filter & " And "
                End If
                Filter = Filter & "日期 >= #" & .Value & "#"
            End If
        End With
        With e.Form.Controls("EndDate")
            If .Value IsNot Nothing Then
                If Filter >"" Then
                    Filter = Filter & " And "
                End If
                Filter = Filter & "日期 <= #" & .Value & "#"
            End If
        End With
        bd1.Filter = Filter
        Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))
        Dim fz As fxDataSource
        bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd1.Groups.AddDef("日期","月")
        bd1.Groups.AddDef("司机")
        bd1.Totals.AddDef("本次运费","订砖发货_运费")
        bd1.Totals.AddDef("已发数量","订砖发货_数量")
        fz=bd1.BuildDataSource
        
        Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))
        Dim lx As fxDataSource
        bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd2.Groups.AddDef("日期","月")
        bd2.Groups.AddDef("司机")
        bd2.Totals.AddDef("本次运费","赊销销砖_运费")
        bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")
        lx=bd2.BuildDataSource
        
        Dim nms As String() = {"年","月","司机"} '指定连接列
        fz.Combine(nms,lx,nms)
        
        Tables("司机运费_Table1").DataSource =fz
        
        With DataTables("司机运费_Table1").DataCols '用表达式计算合计
            
            .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")
            
            .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")
            
        End With

End Select

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/12 8:56:00 [只看该作者]

Dim Value As String =e.Sender.SelectedValue
e.Form.Controls("Table1").Visible = True
Select Case Value
    Case "全部"
        DataTables("客户发砖总表").LoadFilter =""
        DataTables("客户发砖总表").Load
        DataTables("赊销销砖总表").LoadFilter =""
        DataTables("赊销销砖总表").Load
        Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))
        Dim fz As fxDataSource
        bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd1.Groups.AddDef("日期","月")
        bd1.Groups.AddDef("司机")
        bd1.Totals.AddDef("本次运费","订砖发货_运费")
        bd1.Totals.AddDef("已发数量","订砖发货_数量")
       
        bd1.Subtotal = True  '开启垂直汇总模式
        bd1.SubtotalLevel = 0  '只生成总计行
        fz=bd1.BuildDataSource
       
        Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))
        Dim lx As fxDataSource
        bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd2.Groups.AddDef("日期","月")
        bd2.Groups.AddDef("司机")
        bd2.Totals.AddDef("本次运费","赊销销砖_运费")
        bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")
        lx=bd2.BuildDataSource
       
       
       
        Dim nms As String() = {"年","月","司机"} '指定连接列
        fz.Combine(nms,lx,nms)
       
       
        Tables("司机运费_Table1").DataSource =fz
       
        With DataTables("司机运费_Table1").DataCols '用表达式计算合计
           
            .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")
           
            .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")
           
        End With
       
        Dim t As Table = Tables("司机运费_Table1")
        Dim g As Subtotalgroup
        t.SubtotalGroups.Clear()
        t.GroupAboveData = False
        t.TreeVisible = False
        t.SpillNode = True
       
        g = New Subtotalgroup
        g.Aggregate = AggregateEnum.Sum
        g.GroupOn = "*"
        g.TotalOn = "订砖发货_运费,订砖发货_数量,赊销销砖_运费,赊销销砖_数量,总运费,总数量"
        g.Caption = "总计"
        t.SubtotalGroups.Add(g)
       
        t.Subtotal()
    Case "按条件查询"
        Dim Filter As String
        With e.Form.Controls("司机")
            If .Value IsNot Nothing Then
                Filter = "司机 = '" & .Value & "'"
            End If
        End With
       
        With e.Form.Controls("StartDate")
            If .Value IsNot Nothing Then
                If Filter >"" Then
                    Filter = Filter & " And "
                End If
                Filter = Filter & "日期 >= #" & .Value & "#"
            End If
        End With
        With e.Form.Controls("EndDate")
            If .Value IsNot Nothing Then
                If Filter >"" Then
                    Filter = Filter & " And "
                End If
                Filter = Filter & "日期 <= #" & .Value & "#"
            End If
        End With
        Dim bd1 As New GroupTableBuilder("统计表1", DataTables("客户发砖总表"))
        Dim fz As fxDataSource
        bd1.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd1.Groups.AddDef("日期","月")
        bd1.Groups.AddDef("司机")
        bd1.Totals.AddDef("本次运费","订砖发货_运费")
        bd1.Totals.AddDef("已发数量","订砖发货_数量")
        bd1.Filter = Filter
        fz=bd1.BuildDataSource
       
        Dim bd2 As New GroupTableBuilder("统计表1", DataTables("赊销销砖总表"))
        Dim lx As fxDataSource
        bd2.Groups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
        bd2.Groups.AddDef("日期","月")
        bd2.Groups.AddDef("司机")
        bd2.Totals.AddDef("本次运费","赊销销砖_运费")
        bd2.Totals.AddDef("赊砖数量","赊销销砖_数量")
        bd2.Filter = Filter
        lx=bd2.BuildDataSource
       
        Dim nms As String() = {"年","月","司机"} '指定连接列
        fz.Combine(nms,lx,nms)
       
        Tables("司机运费_Table1").DataSource =fz
       
        With DataTables("司机运费_Table1").DataCols '用表达式计算合计
           
            .Add("总运费",Gettype(Integer),"IsNull([订砖发货_运费],0)+IsNull([赊销销砖_运费],0)")
           
            .Add("总数量",Gettype(Double),"IsNull([订砖发货_数量],0)+IsNull([赊销销砖_数量],0)")
           
        End With
        Dim t As Table = Tables("司机运费_Table1")
        Dim g As Subtotalgroup
        t.SubtotalGroups.Clear()
        t.GroupAboveData = False
        t.TreeVisible = False
        t.SpillNode = True
       
        g = New Subtotalgroup
        g.Aggregate = AggregateEnum.Sum
        g.GroupOn = "*"
        g.TotalOn = "订砖发货_运费,订砖发货_数量,赊销销砖_运费,赊销销砖_数量,总运费,总数量"
        g.Caption = "总计"
        t.SubtotalGroups.Add(g)
       
        t.Subtotal()
End Select

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