以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  从不同的表调用数据生成报表  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=128652)

--  作者:aza520
--  发布时间:2018/12/12 11:40:00
--  从不同的表调用数据生成报表
老师,我想从不同的表调用数据生成报表,请问以下两段代码怎么合并

Dim Book As New XLS.Book(ProjectPath & "Attachments\\分项工程中期支付汇总表.xlsx")

Dim fl As String = ProjectPath & "Reports\\分项工程中期支付汇总表.xlsx"

Dim filter As String = DataTables("中间计量表").loadfilter

filter = IIF(filter > ""," where " & filter,"")

book.AddDataTable("分项工程中期支付汇总表","xlgl","selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位,sum(申报数量) as 申报数量,sum(申报数量 * 单价) as 申报金额 fro m {中间计量表} " & filter & " group by 项目名称,施工合同段,章节,支付编号,细目名称,单位")

Book.Build()

Book.Save(fl)

Dim Proc As New Process

Proc.File = fl

Proc.Start()

 

Dim Book As New XLS.Book(ProjectPath & "Attachments\\分项工程中期支付汇总表.xlsx")

Dim fl As String = ProjectPath & "Reports\\分项工程中期支付汇总表.xlsx"

Dim filter As String = DataTables("工程量清单").loadfilter

filter = IIF(filter > ""," where " & filter,"")

book.AddDataTable("分项工程中期支付汇总表","xlgl","selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位,sum(合同数量) as 合同数量,sum(合同数量 * 单价) as 合同金额 fro m {工程量清单} " & filter & " group by 项目名称,施工合同段,章节,支付编号,细目名称,单位")

Book.Build()

Book.Save(fl)

Dim Proc As New Process

Proc.File = fl

Proc.Start()


报表模板:


此主题相关图片如下:66666.png
按此在新窗口浏览图片


--  作者:有点甜
--  发布时间:2018/12/12 11:49:00
--  

1、你要把两个表的数据合并在一起再导出,还是说一个表导出一个sheet,然后得到两个sheet?

 

2、合并两个表,用union all即可,如

 

http://www.foxtable.com/webhelp/scr/0688.htm

 


--  作者:aza520
--  发布时间:2018/12/12 16:01:00
--  
"中间计量表"和”工程量清单表“都有项目名称,施工合同段,章节,支付编号列,老师,以下代码想从工程量清单提取数据生成模板报表中的{合同数量}和{合同金额}列,怎么处理?

Dim Book As New XLS.Book(ProjectPath & "Attachments\\分项工程中期支付汇总表.xlsx")

Dim fl As String = ProjectPath & "Reports\\分项工程中期支付汇总表.xlsx"

Dim filter As String = DataTables("中间计量表").loadfilter

filter = IIF(filter > ""," where " & filter,"")

book.AddDataTable("分项工程中期支付汇总表","xlgl","selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位,sum(申报数量) as 申报数量,sum(申报数量 * 单价) as 申报金额 fro m {中间计量表}, selec t 数量 as 合同数量,数量 * 单价 as 合同金额 fro m {工程量清单}  INNER JOIN {中间计量表}  ON {工程量清单}.项目名称 = {中间计量表}.项目名称 and {工程量清单}.施工合同段 = {中间计量表}.施工合同段 and {工程量清单}.章节 = {中间计量表}.章节 and {工程量清单}.支付编号= {中间计量表}.支付编号 " & filter & " group by 项目名称,施工合同段,章节,支付编号,细目名称,单位")

Book.Build()

Book.Save(fl)

Dim Proc As New Process

Proc.File = fl

Proc.Start()



此主题相关图片如下:7777.png
按此在新窗口浏览图片


--  作者:有点甜
--  发布时间:2018/12/12 16:55:00
--  

没看懂你的问题。把两个表用union all合并起来,然后再处理啊

 

http://www.foxtable.com/webhelp/scr/0688.htm

 

五、UNION 运算符

UNION运算符用于组合两个查询的结果。
例如有一个客户表,一个供应商表,我需要得到所有在中国的客户和供应商的名称和地址。

默认情况下,UNION会自动排除重复的行,然后你可以用ALL关键词来确保返回所有的行,例如:

SELECT 公司名称, 地址 FROM {客户} WHERE 国家 = \'中国\' UNION ALL SELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = \'中国\'


--  作者:aza520
--  发布时间:2018/12/12 17:38:00
--  
就是报表中的【合同数量】、【合同金额】数据来自”工程量清单“表,【申报数量】和【申报金额】数据来自”中间计量表”,不知道该怎么合并
--  作者:有点甜
--  发布时间:2018/12/12 18:23:00
--  

这样,比如

 

SELECT 公司名称, 地址, 合同数量, 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FROM {客户} UNION ALL SELECT 公司名称, 地址, 0, 0, 申报数量, 申报金额 FROM {供应商}


--  作者:aza520
--  发布时间:2018/12/13 9:58:00
--  
合同金额=合同数量 * 单价,  申报金额=申报数量 * 单价。老师,以下代码有什么不对

SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 合同数量, 合同数量 * 单价, 0.0 as 申报数量, 0.0 as 申报数量 * 单价 FRO M {工程量清单} UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表}


--  作者:有点甜
--  发布时间:2018/12/13 10:37:00
--  
SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 合同数量, 合同数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表}
--  作者:aza520
--  发布时间:2018/12/13 17:00:00
--  
老师,下面的代码生的报表是把每次计量的支付编号都分开生成,如图,我想相同的支付编号只生成一行,各类数量和金额则汇总生成到对应支付编号下

Dim Book As New XLS.Book(ProjectPath & "Attachments\\分项工程中期支付汇总表.xlsx")
Dim fl As String = ProjectPath & "Reports\\分项工程中期支付汇总表.xlsx"
Dim filter As String = DataTables("中间计量表").loadfilter
filter = IIF(filter > ""," where " & filter,"")
book.AddDataTable("分项工程中期支付汇总表","xlgl"," SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表}")
Book.Build()
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()


图片点击可在新窗口打开查看此主题相关图片如下:2222.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2018/12/13 18:00:00
--  

再分组统计一次,如

 

select 项目名称,施工合同段,章节,支付编号,细目名称,单位, sum(数量) as 数量, sum(金额合同) as 金额合同,sum(申报数量) as 申报数量, sum(申报金额) as 申报金额 from (SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表}) as a group by 项目名称,施工合同段,章节,支付编号,细目名称,单位