以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  打印报表代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118989)

--  作者:aza520
--  发布时间:2018/5/15 16:33:00
--  打印报表代码问题
如下代码,“变更申请表”(父表)通过“项目名称”、“变更编号”列与“申请费用表”关联,想实现打印报表时生成的数据条件是满足“项目名称”、“变更编号”、"业主审批"三列数据一致,其中"业主审批"是逻辑列。以下代码能这样写吗?请老师指导

Systemready = False
DataTables("申请费用表").loadTop = ""
DataTables("申请费用表").loadpage = 0
DataTables("申请费用表").load
Systemready = True

Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称","变更编号","业主审批", DataTables("变更申请单").LoadFilter)
str = str.replace("|", "\',\'")
DataTables("申请费用表").LoadFilter = "项目名称 in (\'" & str & "\')" And "变更编号 in (\'" & str & "\')" And "业主审批 in (\'" & str & "\')" 
DataTables("申请费用表").LoadTop = ""
DataTables("申请费用表").LoadPage = 0
DataTables("申请费用表").Load

Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更台账2.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更台账2.xlsx"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()

--  作者:有点甜
--  发布时间:2018/5/15 16:56:00
--  

这个意思?

 

Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称+变更编号", DataTables("变更申请单").LoadFilter)
str = str.replace("|", "\',\'")
DataTables("申请费用表").LoadFilter = "项目名称+变更编号 in (\'" & str & "\')"
msgbox(DataTables("申请费用表").LoadFilter)
DataTables("申请费用表").LoadTop = ""
DataTables("申请费用表").LoadPage = 0
DataTables("申请费用表").Load

Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更台账2.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更台账2.xlsx"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()


--  作者:aza520
--  发布时间:2018/5/15 17:27:00
--  
按老师的代码修改,只能生成当前页数据,其它加载页生成不了。想生成的数据同时满足,两个表三列一样的条件
--  作者:有点甜
--  发布时间:2018/5/15 17:37:00
--  

改成,如果还有问题,具体事例发上来测试。

 

Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称+变更编号")
str = str.replace("|", "\',\'")
DataTables("申请费用表").LoadFilter = "项目名称+变更编号 in (\'" & str & "\')"
msgbox(DataTables("申请费用表").LoadFilter)
DataTables("申请费用表").LoadTop = ""
DataTables("申请费用表").LoadPage = 0
DataTables("申请费用表").Load

Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更台账2.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更台账2.xlsx"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()


--  作者:aza520
--  发布时间:2018/5/15 17:52:00
--  
现在把所有的后台数据都生成了。我只想根据当前加载树加载的数据进行生成



--  作者:有点甜
--  发布时间:2018/5/15 19:01:00
--  
回复5楼,2楼的代码绝对没问题,请做个实例发上来测试。
--  作者:aza520
--  发布时间:2018/5/18 18:56:00
--  

弄了很久解决不了,现上传实例,请老师帮诊断。

想解决两个问题:

1、变更统计表1:想生成也仅生成当前加载的所有加载页的数据。

2、变更统计表2:想生成也仅生成当前加载的所有加载页中"业主审批“为TRUE的数据。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:xlgl.zip

--  作者:有点蓝
--  发布时间:2018/5/18 20:44:00
--  
1、变更统计表1:

Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更统计表1.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更统计表1.xlsx"
book.AddDataTable("变更统计表1","xlgl","Select *, (select sum(Round(Case When 变更后数量 Is null Then 0 Else 变更后数量 End * Case When 单价 Is null Then 0 Else 单价 End,0) - Round(Case When 变更前数量 Is null Then 0 Else 变更前数量 End * Case When 单价 Is null Then 0 Else 单价 End,0))  from {申请费用表} b where a.项目名称=b.项目名称 and a.变更编号=b. 变更编号) As [估计变更金额] from {变更申请单} a " & IIF(vars("变更信息表filter") > ""," where " & vars("变更信息表filter"),""))
Book.Build()
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()

2、

Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称+变更编号", DataTables("变更申请单").LoadFilter & “ and 业主审批=1”)

--  作者:aza520
--  发布时间:2018/5/18 21:58:00
--  
老师,统计表1已经可以了,但是统计表2改成下面代码,仍然只能生成当前页的数据

Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称+变更编号", DataTables("变更申请单").LoadFilter & " And 业主审批=1")
str = str.replace("|", "\',\'")
DataTables("申请费用表").LoadFilter = "项目名称+变更编号 in (\'" & str & "\')"
DataTables("申请费用表").LoadTop = ""
DataTables("申请费用表").LoadPage = 0
DataTables("申请费用表").Load
Dim Book As New XLS.Book(ProjectPath & "Attachments\\变更统计表2.xlsx")
Dim fl As String = ProjectPath & "Reports\\变更统计表2.xlsx"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start()

--  作者:有点蓝
--  发布时间:2018/5/18 22:07:00
--  
Dim str = DataTables("变更申请单").SQLGetComboListString("项目名称+变更编号", DataTables("变更信息表").LoadFilter & " And 业主审批=1")