以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何生成负数进行统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177651)

--  作者:lgz518
--  发布时间:2022/5/30 10:12:00
--  如何生成负数进行统计
需求:如何实现类型为“冲帐”数量为负数,并能进行统计?

下面代码,只样式负数,做统计是正数,无法正确统计。

If  e.Row("类型") = "冲帐"  Then
    e.Style = "冲帐"
    If e.Col.name = "数量"
        e.text = "-" & e.Row("数量")   
    End If

--  作者:有点蓝
--  发布时间:2022/5/30 11:37:00
--  
怎么做统计的
--  作者:lgz518
--  发布时间:2022/5/30 12:22:00
--  
Dim b As New GroupTableBuilder("统计表1",DataTables("明细"))

b.Groups.AddDef("品名")

b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("统计_Table1").DataSource = b.BuildDataSource()

--  作者:有点蓝
--  发布时间:2022/5/30 14:00:00
--  
Dim b As New SQLGroupTableBuilder("统计表1", "明细")
b.ConnectionName = "数据源"
b.Groups.AddDef("品名")
b.Totals.AddExp("订购数量", "IIF(类型=\'冲帐\',-1,1) * 数量") \'
b.Totals.AddDef("金额", "订购金额") \'
b.Filter = Filter 
Tables("统计_Table1").DataSource = b.BuildDataSource()

--  作者:lgz518
--  发布时间:2022/5/30 15:30:00
--  
老师,

4楼是代码,是后台统计,由于我有设定按不同人只看不同数据,及对此进行统计,所以用当前表的数据,改一下代码,是错,请老师,纠正,谢谢


Dim b As New GroupTableBuilder("统计表1",DataTables("明细"))

b.Groups.AddDef("品名")

b.Totals.AddDef("订购数量", "IIF(类型=\'冲帐\',-1,1) * 数量") \'
\'b.Totals.AddExp("订购数量", "IIF(类型=\'冲帐\',-1,1) * 数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("统计_Table1").DataSource = b.BuildDataSource()

--  作者:有点蓝
--  发布时间:2022/5/30 15:43:00
--  

[此贴子已经被作者于2022/5/30 15:43:11编辑过]

--  作者:有点蓝
--  发布时间:2022/5/30 15:49:00
--  
只能是后台才能这样统计。可以把【不同人只看不同数据】的条件也加到统计条件里

或者在表格里添加一个表达式列,把类型=\'冲帐\'的值改为负数,类似:IIF(类型=\'冲帐\',-1*数量,数量),然后通过表达式列进行统计


--  作者:lgz518
--  发布时间:2022/5/30 16:02:00
--  
Dim Filter1 As String = "制单人=\'" & _Username & "\'"
Dim dr2 As DataRow
dr2 = DataTables("Users").Find("[Group] = \'" & _UserGroup & "\'")
Dim s As String
If dr2 IsNot Nothing Then
    s = dr2("Xjry")
    If s > "" Then
      Filter1 = Filter1 & " or UserID in (" & s.Replace(",", ",") & ")"
        
    End If 
End If



Dim b As New SQLGroupTableBuilder("统计表1", "明细")
b.C
b.Groups.AddDef("品名")
b.Totals.AddExp("订购数量", "IIF(类型=\'冲帐\',-1,1) * 数量") \'
b.Totals.AddDef("金额", "订购金额") \'
b.Filter = Filter 
Tables("统计_Table1").DataSource = b.BuildDataSource()
条件没起作用,还是全部后台数据


--  作者:有点蓝
--  发布时间:2022/5/30 16:15:00
--  
b.Filter = Filter1