以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何加载列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120602)

--  作者:nbsugu_z
--  发布时间:2018/6/20 11:27:00
--  如何加载列

老师,请问如何加载数据说明。

  分组统计汇总表生成后,想把备注说明列加入到统计表中的最后一列。比如产品表和客户销售表组合统计汇总,按某产品的客户销售金额。客户销售表中每个客户第一次发生有销售政策说明列,以后发生就不写了,想把这一行的说明加到汇总表中的最后一列,能不能做到?


--  作者:有点甜
--  发布时间:2018/6/20 11:31:00
--  

用sqlGroupTableBuilder,如

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=119747&authorid=0&page=0&star=1

 


--  作者:nbsugu_z
--  发布时间:2018/6/20 11:48:00
--  看不清楚


        Dim bd1 As New GroupTableBuilder("统计表1",DataTables("成本发票录入"))
        Dim dt1 As fxDataSource
        bd1.Groups.AddDef("项目分类")
        bd1.Groups.AddDef("材料供应商")
        bd1.Totals.AddDef("购进金额","已开票_金额")
        bd1.Totals.AddDef("发票数量","已开票_数量")
        dt1 = bd1.BuildDataSource()
       
        Dim bd2 As New GroupTableBuilder("统计表2",DataTables("付款明细表"))
        Dim dt2  As fxDataSource
        bd2.Groups.AddDef("项目分类")
        bd2.Groups.AddDef("材料供应商")
        bd2.Totals.AddDef("付款金额","已付金额")
        dt2 = bd2.BuildDataSource()
       
        Dim bd3 As New GroupTableBuilder("统计表3",DataTables("材料入库登记"))
        Dim dt3  As fxDataSource
        bd3.Groups.AddDef("项目分类")
        bd3.Groups.AddDef("材料供应商")
        bd3.Totals.AddDef("数量","收料结算_数量")
        bd3.Totals.AddDef("金额","收料结算_金额")
        dt3 = bd3.BuildDataSource()
       
        Dim arr() As String = {"项目分类","材料供应商"}
        dt1.Combine(arr,dt2,arr)
        dt1.Combine(arr,dt3,arr)
       
        dt1.show("统计表") \'将统计结果绑定到Table
       
        Dim t As Table = Tables("统计表")
        With t.DataTable.DataCols  \'用表达式列计算库存数据
            .Add("按发票未付款金额",Gettype(Integer), "IsNull([已开票_金额],0) - ISNULL([已付金额],0)")
            .Add("未开票金额",Gettype(Integer), "IsNull([收料结算_金额],0) - ISNULL([已开票_金额],0)")
            .Add("按收料未付款金额",Gettype(Integer), "IsNull([收料结算_金额],0) - ISNULL([已付金额],0)")
        End With
       
        With Tables("统计表")
            .MergeMode = MergeModeEnum.Standard
            .MergeCols.Clear()
            .MergeCols.Add("项目分类")
            .MergeCols.Add("材料供应商")
            .MergeSort = "项目分类,材料供应商"
            .AllowMerge = True
        End With
       
        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()
        MainTable = t

 

 

以上运行没问题的,我想在统计表中加最后一列,“说明”,是文本列,不是备注列。数据取“成本发票录入”表中的“说明”中的内容。是某客户第一次发生时的数据,因为以后发生的就不重复写了。这个内容要加到统计表中的最后一列中去,代码如何修改? 或者以后发生时此列不填,为空也可以!

[此贴子已经被作者于2018/6/20 11:51:25编辑过]

--  作者:有点甜
--  发布时间:2018/6/20 11:53:00
--  

        Dim bd1 As New GroupTableBuilder("统计表1",DataTables("成本发票录入"))
        Dim dt1 As fxDataSource
        bd1.Groups.AddDef("项目分类")
        bd1.Groups.AddDef("材料供应商")
        bd1.Totals.AddDef("购进金额","已开票_金额")
        bd1.Totals.AddDef("发票数量","已开票_数量")

 

改成

 

        Dim bd1 As New sqlGroupTableBuilder("统计表1", "成本发票录入")
        Dim dt1 As fxDataSource
        bd1.Groups.AddDef("项目分类")
        bd1.Groups.AddDef("材料供应商")
        bd1.Totals.AddDef("购进金额","已开票_金额")
        bd1.Totals.AddDef("发票数量","已开票_数量")

        bd1.Totals.AddExp("说明", "说明", AggregateEnum.max)


--  作者:nbsugu_z
--  发布时间:2018/6/20 12:23:00
--  

提示:生成SQL语句错误,无法继续统计


--  作者:有点甜
--  发布时间:2018/6/20 15:01:00
--  

方法一:循环表格每一行数据,查找对应的【“成本发票录入”表中的“说明”中的内容】过来赋值;

 

方法二:上传具体项目测试。