Foxtable(狐表)用户栏目专家坐堂 → 多表联合统计问题!


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

主题:多表联合统计问题!

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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
多表联合统计问题!  发帖心情 Post By:2016/8/14 22:17:00 [只看该作者]

If _UserRole = "导购" Then 
messagebox.Show("无权查看!")
End If
If _UserRole = "开发者" Then 

Dim jb As new SQLJoinTableBuilder("查询表1","pos_t_saleflow")
jb.C
jb.AddTable("pos_t_saleflow","item_no","bi_t_item_info","item_no")  
jb.AddCols("{pos_t_saleflow}.flow_no","{pos_t_saleflow}.branch_no","{pos_t_saleflow}.oper_id","{pos_t_saleflow}.item_no","{bi_t_item_info}.price","{bi_t_item_info}.item_name","{pos_t_saleflow}.sale_money","{pos_t_saleflow}.oper_date")

Dim t As Table = e.Form.Controls("Table1").Table
t.DataSource  = jb.BuildDataSource


Dim bd1 As New GroupTableBuilder("统计表3", DataTables("代金券成本核算_Table1"))
Dim dt1 As fxDataSource

bd1.Groups.AddDef("oper_date",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
bd1.Groups.AddDef("oper_date",DateGroupEnum.Month,"月") '添加日期列用于分组,并用"年"代替原名称
bd1.Groups.AddDef("oper_date",DateGroupEnum.Day,"日") '添加日期列用于分组,并用"年"代替原名称
bd1.Groups.AddDef("oper_id","导购")
bd1.Groups.AddDef("flow_no","流水")
bd1.Totals.AddDef("price","进价")
bd1.FromServer = True
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2", DataTables("pos_t_payflow"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("oper_date",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
bd2.Groups.AddDef("oper_date",DateGroupEnum.Month,"月") '添加日期列用于分组,并用"年"代替原名称
bd2.Groups.AddDef("oper_date",DateGroupEnum.Day,"日") '添加日期列用于分组,并用"年"代替原名称
bd2.Groups.AddDef("oper_id","导购")
bd2.Groups.AddDef("flow_no","流水")
bd2.Totals.AddDef("pay_amount","代金券")
'bd2.FromServer = True
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3", DataTables("pos_t_saleflow"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("oper_date",DateGroupEnum.Year,"年") '添加日期列用于分组,并用"年"代替原名称
bd3.Groups.AddDef("oper_date",DateGroupEnum.Month,"月") '添加日期列用于分组,并用"年"代替原名称
bd3.Groups.AddDef("oper_date",DateGroupEnum.Day,"日") '添加日期列用于分组,并用"年"代替原名称
bd3.Groups.AddDef("oper_id","导购")
bd3.Groups.AddDef("flow_no","流水")
bd3.Totals.AddDef("sale_money","销售额")
bd3.FromServer = True
dt3 = bd3.BuildDataSource()

Dim nms As String() = { "年","月","日" ,"导购","流水" }
dt3.Combine(nms,dt1,nms) '将销售统计数据组合到进货统计数据
dt3.Combine(nms,dt2,nms) '将退货统计数据组合到进货统计数据

Tables("代金券成本核算_Table1").DataSource = dt3
Tables("代金券成本核算_Table1").Filter = "[代金券] Is Not Null"

Dim jb2 As new SQLJoinTableBuilder("查询表1","代金券成本核算_Table1")
jb2.C
jb2.AddTable("代金券成本核算_Table1","flow_no","pos_t_saleflow","flow_no")  
jb2.AddCols("{pos_t_saleflow}.item_no","{代金券成本核算_Table1}.*")
Tables("代金券成本核算_Table1").DataSource = jb2.BuildDataSource
With DataTables("代金券成本核算_Table1").DataCols  '用表达式列计算库存数据
    .Add("亏损",Gettype(Double), "IsNull([销售额],0) - ISNULL([进价],0) - ISNULL([代金券],0)")
End With
End If

运行提示:对象"代金券成本核算_Table1"错误。 好像是这句话,忘了。

代码大致需求: 将商品表,流水表,付款明细表,根据某些列关联,统计到dt3的时候,就差商品名称没有了,我的思路是,dt3再和流水表绑定通过flow_no,然后再后商品表绑定通过item_no,这样就得到商品名称了。 没办法就这么绕,我的代码最后怎么写啊? 绕晕了都快!

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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2016/8/14 22:17:00 [只看该作者]

saleflow 流水, item_info商品,payflow付款明细

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/8/15 8:09:00 [只看该作者]

当你执行:

 

Tables("代金券成本核算_Table1").DataSource = dt3

 

 

"代金券成本核算_Table1"就是一个只存在于内存中的临时表,用于显示统计结果,这个表在后台并不存在,所以你不能再对这个表用SQLJoinTableBuilder查询统计,SQLJoinTableBuilder查询的是后台实际存在的表。

 

 

 

 


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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2016/8/15 9:29:00 [只看该作者]

那我该怎么实现思路呀狐爸

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/15 9:44:00 [只看该作者]

上传例子

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


加好友 发短信
等级:幼狐 帖子:124 积分:1116 威望:0 精华:0 注册:2016/2/24 17:44:00
  发帖心情 Post By:2016/8/15 13:56:00 [只看该作者]

用的sqlserver服务器上的数据库啊, 上传上去就连不到了吧 ? 

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/15 15:19:00 [只看该作者]

创建新项目,导出为内部表或者Access数据库

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/15 15:31:00 [只看该作者]

以下是引用a2029460在2016/8/15 9:29:00的发言:
那我该怎么实现思路呀狐爸

 

查询得到数据以后,循环每一行,对应的查找得到商品名称,填上去就好啊。


 回到顶部