以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  统计出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=79991)

--  作者:lgj716330
--  发布时间:2016/1/13 15:28:00
--  统计出错
求助,“年度总体预算”这表里的“所属单位”列删除之后是没有问题的,但因有其他用途,所以不能删除,如何修改代码

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb



--  作者:Hyphen
--  发布时间:2016/1/13 17:04:00
--  
增加统计表没有的字段参考http://www.foxtable.com/help/topics/1428.htm



Tables("窗口1_Table1").DataSource = dt1 \'将统计结果绑定到Table
With 
DataTables("窗口1_Table1").DataCols  \'用表达式列计算库存数据
    
.Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)")
    
.Add("库存_金额",Gettype(Double), "[库存_数量] /[进货_数量] * [进货_金额]"
End With

--  作者:lgj716330
--  发布时间:2016/1/13 17:28:00
--  
貌似还不行
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb



--  作者:lgj716330
--  发布时间:2016/1/14 9:30:00
--  
“年度总体预算”这张表把“所属单位”这一列去掉,又是没问题的,只要加上这一列就会出错,有点晕
--  作者:Hyphen
--  发布时间:2016/1/14 10:06:00
--  
Dim Filter As String \'设置筛选条件
With e.Form.Controls("DW")
    If .Value IsNot Nothing Then
        Filter = "{部门档案}.所属单位 = \'" & .Value & "\'"
    End If
End With

Dim b As New SQLgroupTableBuilder("销售预算进度分析","部门损益总账")
Dim dt1 As fxDataSource
Dim d As Date = DataTables("部门损益总账").Compute("max(所属日期)")
Dim d1 As Date = new Date(d.year, 1, 1)
Dim d2 As Date = new Date(d.year, 12, 31)
Dim filter1 = "所属日期 >= #" & d1 & "# and 所属日期 <= #" & d2 & "#"
b.AddTable("部门损益总账","部门名称","部门档案","部门名称")
b.AddTable("部门损益总账","科目编号","科目档案","科目编码")
b.Groups.AddDef("{部门档案}.所属单位")
b.Totals.AddDef("借方发生","销售实际") \'添加数量列用于统计
b.Decimals = 2 \'小数点取0位
b.Filter = "一级科目 = \'主营业务收入\' and 部门类型 = \'8批发客户\' and (" & filter & ") and (" & filter1 & ")"
dt1 = b.BuildDataSource()
b.Build \'生成统计表
.........

--  作者:lgj716330
--  发布时间:2016/1/14 10:26:00
--  
哦,可以了,谢谢Hyphen
--  作者:lgj716330
--  发布时间:2016/1/15 11:33:00
--  
求助,求加权平均,下述代码有问题
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb

DataTables("年度总体预算").DataCols.Add("毛利预算", Gettype(Double), "[毛利率预算] * [销售预算]")
Dim bd2 As New SQLGroupTableBuilder("统计表2","年度总体预算")
Dim dt2 As fxDataSource
bd2.AddTable("年度总体预算","部门名称","部门档案","部门名称") 
bd2.Groups.AddDef("{部门档案}.所属单位")
bd2.Totals.Adddef("毛利预算")
bd2.Totals.AddDef("销售预算")
bd2.Filter = "零售终端 = true and (" & filter & ")"
dt2 = bd2.BuildDataSource()


Dim nms As String() = {"所属单位"}
dt1.Combine(nms,dt2,nms)
dt1.Show("毛利率预算进度分析") \'显示统计结果

DataTables("毛利率预算进度分析").DataCols.Add("综合毛利率", Gettype(Double), "[毛利预算] / [销售预算]")

[此贴子已经被作者于2016/1/15 14:16:05编辑过]

--  作者:lgj716330
--  发布时间:2016/1/15 15:23:00
--  
求助大神啊
--  作者:Hyphen
--  发布时间:2016/1/15 15:42:00
--  
Dim Filter As String \'设置筛选条件
With e.Form.Controls("DW")
    If .Value IsNot Nothing Then
        Filter = "{部门档案}.所属单位 = \'" & .Value & "\'"
    End If
End With

Dim b As New SQLcrossTableBuilder("毛利率预算进度分析","部门损益总账")
Dim dt1 As fxDataSource
Dim d As Date = DataTables("部门损益总账").Compute("max(所属日期)")
Dim d1 As Date = new Date(d.year, 1, 1)
Dim d2 As Date = new Date(d.year, 12, 31)
Dim filter1 = "所属日期 >= #" & d1 & "# and 所属日期 <= #" & d2 & "#"
b.AddTable("部门损益总账","部门名称","部门档案","部门名称")
b.AddTable("部门损益总账","科目编号","科目档案","科目编码")
b.hGroups.AddDef("{部门档案}.所属单位")
b.vGroups.AddDef("一级科目")
b.Totals.AddDef("借方发生") \'添加数量列用于统计
b.Decimals = 2 \'小数点取0位
b.Filter = "(一级科目 = \'主营业务收入\' or 一级科目 = \'主营业务成本\')  And 零售终端 = true and (" & filter & ") and (" & filter1 & ")"
dt1 = b.BuildDataSource()
b.Build \'生成统计表

\'If DataTables("年度总体预算").DataCols.Contains("毛利预算") = False Then
    \'DataTables("年度总体预算").DataCols.Add("毛利预算", Gettype(Double), "[毛利率预算] * [销售预算]")
\'End If
Dim bd2 As New SQLGroupTableBuilder("统计表2","年度总体预算")
Dim dt2 As fxDataSource
bd2.AddTable("年度总体预算","部门名称","部门档案","部门名称")
bd2.Groups.AddDef("{部门档案}.所属单位")
bd2.Totals.AddExp("毛利预算","[毛利率预算] * [销售预算]")
\'bd2.Totals.AddDef("毛利预算")
bd2.Totals.AddDef("销售预算")
bd2.Filter = "零售终端 = true and (" & filter & ")"
dt2 = bd2.BuildDataSource()


Dim nms As String() = {"所属单位"}
dt1.Combine(nms,dt2,nms)
dt1.Show("毛利率预算进度分析") \'显示统计结果
If DataTables("毛利率预算进度分析").DataCols.Contains("综合毛利率") = False Then
DataTables("毛利率预算进度分析").DataCols.Add("综合毛利率", Gettype(Double), "[毛利预算] / [销售预算]")
End If

--  作者:lgj716330
--  发布时间:2016/1/15 15:48:00
--  
有点明白了,谢谢