Foxtable(狐表)用户栏目专家坐堂 → 如何在生成的统计表中新增表达式列?


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

主题:如何在生成的统计表中新增表达式列?

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


加好友 发短信
等级:七尾狐 帖子:1682 积分:16353 威望:0 精华:0 注册:2013/7/31 13:03:00
如何在生成的统计表中新增表达式列?  发帖心情 Post By: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
求解

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1682 积分:16353 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/3/27 21:40:00 [只看该作者]

谢谢。有问:
这句:db.Totals.AddDef("单号",AggregateEnum.Count,"单数")
如果要统计不重复的单号该如何处理?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105479 积分:536386 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/27 21:54:00 [只看该作者]

这里做不到,直接在sql中过滤

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


加好友 发短信
等级:七尾狐 帖子:1682 积分:16353 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/3/28 11:26:00 [只看该作者]

那么,就此例而言,如何在sql中过滤?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 13:01:00 [只看该作者]

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

 

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

 

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

 


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


加好友 发短信
等级:七尾狐 帖子:1682 积分:16353 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/3/28 14:31:00 [只看该作者]

谢谢,请您帮忙大致写一个代码框架好吗?


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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


 回到顶部