以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多表联合统计问题! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89049) |
-- 作者:a2029460 -- 发布时间: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 -- 发布时间:2016/8/14 22:17:00 -- saleflow 流水, item_info商品,payflow付款明细 |
-- 作者:狐狸爸爸 -- 发布时间:2016/8/15 8:09:00 -- 当你执行:
Tables("代金券成本核算_Table1").DataSource = dt3
"代金券成本核算_Table1"就是一个只存在于内存中的临时表,用于显示统计结果,这个表在后台并不存在,所以你不能再对这个表用SQLJoinTableBuilder查询统计,SQLJoinTableBuilder查询的是后台实际存在的表。
|
-- 作者:a2029460 -- 发布时间:2016/8/15 9:29:00 -- 那我该怎么实现思路呀狐爸 |
-- 作者:Hyphen -- 发布时间:2016/8/15 9:44:00 -- 上传例子 |
-- 作者:a2029460 -- 发布时间:2016/8/15 13:56:00 -- 用的sqlserver服务器上的数据库啊, 上传上去就连不到了吧 ? |
-- 作者:Hyphen -- 发布时间:2016/8/15 15:19:00 -- 创建新项目,导出为内部表或者Access数据库
|
-- 作者:大红袍 -- 发布时间:2016/8/15 15:31:00 -- 以下是引用a2029460在2016/8/15 9:29:00的发言:
那我该怎么实现思路呀狐爸
查询得到数据以后,循环每一行,对应的查找得到商品名称,填上去就好啊。 |