以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 关于合并多个查询结果中的表达式列问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=147813)
|
-- 作者:lal021962
-- 发布时间:2020/3/24 19:21:00
-- 关于合并多个查询结果中的表达式列问题
Dim k As String = Tables("资金流向明细表").current("账号名称") Dim g As Date = Tables("资金流向明细表").current("开始时间") Dim f As Date = Tables("资金流向明细表").current("结束时间")
Dim jb1 As New SQLJoinTableBuilder("查询表1","资金账号") jb1.C jb1.AddTable("资金账号","账号编号","资金支出单","账号编号") jb1.AddCols("付款单编号","{资金支出单}.单据类型","账号名称", "(-支出金额)","付款日期") jb1.filter = "账号名称 =\'" & k & "\'"
Dim jb2 As New SQLJoinTableBuilder("查询表1","资金账号") jb2.C jb2.AddTable("资金账号","账号编号","资金收入单","账号编号") jb2.AddCols("收款单编号","{资金收入单}.单据类型","账号名称", "收入金额","收款日期") jb2.filter = "账号名称 =\'" & k & "\'"
Dim jb3 As New SQLJoinTableBuilder("查询表1","资金账号") jb3.C jb3.AddTable("资金账号","账号编号","工厂销售收款单","账号编号") jb3.AddCols("收款单编号","{工厂销售收款单}.表名代码","收款账号","应收款金额","收款日期") jb3.filter = "账号名称 =\'" & k & "\'"
jb1.Build() jb1.Union(jb2) \'组合jb2 jb1.Union(jb3)
Tables("资金流向明细表_Table1").datasource =jb1.builddatasource
以上代码中,由于jb3中的应收款金额为表达式列,造成列名无效,请问怎么办
|
-- 作者:有点蓝
-- 发布时间:2020/3/24 20:30:00
--
jb3.AddCols("收款单编号","{工厂销售收款单}.表名代码","收款账号","收款日期") jb3.AddExp("应收款金额", "这里改为表格中应收款金额列的表达式")
|
-- 作者:DataWorker
-- 发布时间:2020/3/24 20:33:00
--
有点蓝你QQ多少
|
-- 作者:有点蓝
-- 发布时间:2020/3/24 20:39:00
--
以下是引用DataWorker在2020/3/24 20:33:00的发言:
有点蓝你QQ多少
没有,有什么问题在论坛问即可
|
-- 作者:lal021962
-- 发布时间:2020/3/24 20:56:00
--
由于有关联子表的表达式,出现了以下报错,怎么破:
表达式如下:
isnull(Sum(Child(对内销售收款单关联对内销售收款明细表).本次收款金额),0)-isnull(Sum(Child(对内销售收款单关联对内销售收款明细表).抹零金额),0) |
此主题相关图片如下:qq图片20200324205909.png
|
-- 作者:有点蓝
-- 发布时间:2020/3/24 21:19:00
--
jb3.AddTable("资金账号","账号编号","工厂销售收款单","账号编号") jb3.AddTable("资金账号","账号编号","xx关联子表","账号编号") jb3.AddCols("收款单编号","{工厂销售收款单}.表名代码","收款账号","收款日期") jb3.AddExp("应收款金额", "isnull(Sum({xx关联子表}.本次收款金额),0)-isnull(Sum({xx关联子表}.抹零金额),0)")
|
-- 作者:lal021962
-- 发布时间:2020/3/25 21:31:00
--
如下代码:
Dim jb3 As New SQLJoinTableBuilder("查询表1","资金账号") jb3.C jb3.AddTable("资金账号","账号编号","工厂销售收款单","账号编号") jb3.AddTable("资金账号","账号编号","对内销售收款明细表","账号编号") jb3.AddCols("{工厂销售收款单}.收款单编号","{工厂销售收款单}.表名代码","账号名称" ,"{工厂销售收款单}.收款日期") jb3.AddExp("实际收款金额", "isnull(Sum({对内销售收款明细表}.本次收款金额),0)-isnull(Sum({对内销售收款明细表}.抹零金额),0)") jb3.filter = "账号名称 =\'" & k & "\' and {工厂销售收款单}.收款日期>\'" & g & "\'"
B报错:选择列表中的列 \'工厂销售收款单.收款单编号\' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
此主题相关图片如下:qq图片20200325213604.png
|
-- 作者:狐狸爸爸
-- 发布时间:2020/3/26 8:22:00
--
提示:如果你要进行统计,那么统计列之外的其他列,都必须设置为分组。
示例七 SQLJoinTableBuilder也可以进行简单的分组统计。 用AddCols增加列时,可以将最后一个参数设置为True,以表示添加的是分组列。 用AddExp增加表达式列时,可以将最后一个参数设置为True,以表示添加的是分组列。
例如按年统计各客户订购每种产品的数量和金额: Dim jb As New SQLJoinTableBuilder("查询表1","订单") jb.ConnectionName = "Sale" jb.AddTable("订单","产品ID","产品","产品ID") jb.AddTable("订单","客户ID","客户","客户ID") jb.AddExp("年","Year(日期)",True) jb.AddCols("产品名称","客户名称",True) jb.AddExp("数量","Sum(数量)") jb.AddExp("金额","Sum(数量 * 单价)") jb.Build() MainTable = Tables("查询表1") 得到的统计表为:
|
-- 作者:lal021962
-- 发布时间:2020/3/26 12:36:00
--
这样做是不会报错了,但是出现了如下问题,代码如下:
Dim k As String = Tables("资金流向明细表").current("账号名称") Dim g As Date = Tables("资金流向明细表").current("开始时间") Dim f As Date = Tables("资金流向明细表").current("结束时间")
Dim jb1 As New SQLJoinTableBuilder("查询表1","资金账号") jb1.C jb1.AddTable("资金账号","账号编号","资金支出单","账号编号") jb1.AddCols("付款单编号","{资金支出单}.单据类型","账号名称", "(-支出金额)","付款日期") jb1.filter = "账号名称 =\'" & k & "\' and 付款日期>=\'" & g & "\' and 付款日期<=\'" & f & "\'"
Dim jb2 As New SQLJoinTableBuilder("查询表1","资金账号") jb2.C jb2.AddTable("资金账号","账号编号","资金收入单","账号编号") jb2.AddCols("收款单编号","{资金收入单}.单据类型","账号名称", "收入金额","收款日期") jb2.filter = "账号名称 = \'" & k & "\' and 收款日期>\'" & g & "\'"
Dim jb3 As New SQLJoinTableBuilder("查询表1","资金账号") jb3.C jb3.AddTable("资金账号","账号编号","工厂销售收款单","账号编号") jb3.AddTable("资金账号","账号编号","对内销售收款明细表","账号编号") jb3.AddCols("{工厂销售收款单}.收款单编号","{工厂销售收款单}.表名代码","账号名称",True) jb3.AddExp("实际收款金额", "isnull(Sum({对内销售收款明细表}.本次收款金额),0)-isnull(Sum({对内销售收款明细表}.抹零金额),0)") jb3.AddCols("{工厂销售收款单}.收款日期",True) jb3.filter = "账号名称 =\'" & k & "\' and {工厂销售收款单}.收款日期>\'" & g & "\'"
jb1.Build() jb1.Union(jb2) \'组合jb2 jb1.Union(jb3) \'组合jb2 Tables("资金流向明细表_Table1").datasource =jb1.builddatasource
导致在收款金额那一列,关联的都是此收款账号的所有金额的合计,而不是根据其父表的每一个工厂销售收款单的收款单编号来合计
此主题相关图片如下:1.png
|
-- 作者:有点蓝
-- 发布时间:2020/3/26 13:36:00
--
请上传实例测试
|