以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在生成的统计表中新增表达式列?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98282)

--  作者:CZY66DS
--  发布时间:2017/3/27 16:19:00
--  如何在生成的统计表中新增表达式列?
代码如下:
Dim Val As Date
If InputValue(Val, "提示","请输入日期:") Then
Dim xsb As String = pp1 & "销售记录表"
Dim spb As String = pp1 & "商品表"
Dim sql As String \'销售记录表
sql = "Select {" & xsb & "}.条码,数量,标准价,(数量*标准价) As 标准金额,成交金额,店铺,业务员,日期,单号 fr om{" & xsb & "} LEFT JOIN {" & spb & "} ON {" & xsb & "}.条码 = {" & spb & "}.条码 where 店铺 = \'" & user.name & "\' and 日期 = \'" & Val & "\'" \'"
Dim DB As New GroupTableBuilder("统计表1",sql,CONN ) \'销售统计
Dim dt As fxDataSource
db.Groups.AddDef("业务员")
db.Totals.AddDef("数量")
db.Totals.AddDef("成交金额")
db.Totals.AddDef("标准金额")
db.Totals.AddDef("单号",AggregateEnum.Count,"单数")
db.VerticalTotal = True
\'bd1.Filter = " 年代 = \'" & nd & "\' and 季节 = \'" & jj & "\'"
dt = DB.BuildDataSource()
Dim T As Table = e.Fo rm.Controls("Table1").Table
T.DataSource  = dt \'将窗口表绑定到统计表
\'--------以下希望增加单效列和附加列-------------------
单效=成交金额/单数
附加=数量/单数
End If
求解

--  作者:有点色
--  发布时间:2017/3/27 16:31:00
--  
t.DataTable.DataCols.Add("单效", Gettype(Double), "iif(单数>0,成交金额/单数,0)")
t.DataTable.DataCols.Add("附加", Gettype(Double), "iif(单数>0,数量/单数,0)")

--  作者:czy66ds
--  发布时间:2017/3/27 21:40:00
--  
谢谢。有问:
这句:db.Totals.AddDef("单号",AggregateEnum.Count,"单数")
如果要统计不重复的单号该如何处理?

--  作者:有点蓝
--  发布时间:2017/3/27 21:54:00
--  
这里做不到,直接在sql中过滤
--  作者:CZY66DS
--  发布时间:2017/3/28 11:26:00
--  
那么,就此例而言,如何在sql中过滤?
--  作者:有点色
--  发布时间:2017/3/28 13:01:00
--  

1、sql语句,直接生成一个临时表 dt1

 

2、使用dt1进行分组统计生成表格 t

 

3、循环t的每一行,对dt1进行getValues().Count获取单号的值,填入每一行

 


--  作者:CZY66DS
--  发布时间:2017/3/28 14:31:00
--  
谢谢,请您帮忙大致写一个代码框架好吗?


--  作者:有点色
--  发布时间:2017/3/28 16:08:00
--  

Dim cmd As New SQLCommand
Dim dt1 As DataTable
cmd.CommandText = sql
dt1 = cmd.ExecuteReader()

 

\'-----------------------------------------------


For Each r As Row In t.rows
    r("单数") = dt1.GetValues("单号", "业务员 = \'" & r("业务员") & "\'").count
Next