Foxtable(狐表)用户栏目专家坐堂 → 生成报表代码错误


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

主题:生成报表代码错误

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/12/14 12:45:00 [只看该作者]

老师,9楼的代码不能生成多页加载的数据,所以我用10楼的代码。当计量汇总表只有一行时(如图一),可以正确生成报表,当然计量汇总表有多行时(如图二),则出现错误:

.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2017.12.18.1
错误所在事件:窗口,计量统计,Button10,Click
详细错误信息:
未将对象引用设置到对象的实例。

图一:

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

图二:

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/14 13:20:00 [只看该作者]

1、你点击计量汇总后,生成的条件是什么?贴出来看看

 

2、你循环每一行计量汇总,合成多个条件后处理,不行?

 

Dim filter As String = "1=2"
For Each dr As DataRow In DataTables("计量汇总").DataRows
    filter &= " or " & 条件
Next
msgbox(filter)

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/12/14 15:38:00 [只看该作者]

我在计量汇总表的CurrentChanged事件设如下代码,根据选择计量汇总表的行加载中间计量表的数据

If e.Table.name = "计量统计.计量汇总" Then
    Dim f As Row  = e.Table.Current
    If f Is Nothing Then '如果Current为Nothing
        Return '则返回
    End If
    
    DataTables("中间计量表").LoadFilter = "项目名称 ='" & f("项目名称") & "' And 施工合同段 ='" & f("施工合同段") & "' And 计量期次 ='" & f("计量期次") & "'"
    DataTables("中间计量表").Load
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/14 17:05:00 [只看该作者]

那就这样合成,如

 

Dim filter As String = "1=2"
For Each f As DataRow In DataTables("计量汇总").DataRows
    filter &= " or " &  "项目名称 ='" & f("项目名称") & "' And 施工合同段 ='" & f("施工合同段") & "' And 计量期次 ='" & f("计量期次") & "'"
Next
msgbox(filter)

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/12/14 17:08:00 [只看该作者]

已经可以了。但现在还有另外一个类似报表的问题,也是通过选择计量汇总表的行来加载”工程量清单“表的数据(控制列是”项目名称“、”施工合同段“),以下代码也是会加载所有的”工程量清单“数据生成报表,以下代码怎么改才能只生成”工程量清单“当前生成的数据报表。

Dim ids As String
For Each dr As DataRow In DataTables("中间计量表").DataRows
    ids = ids & "," & dr("_Identify")
Next
ids= ids.Trim(",")

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 合同金额,sum(申报数量) as 申报数量, sum(申报金额) as 申报金额 fro m (SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表}) as a group by 项目名称,施工合同段,章节,支付编号,细目名称,单位")
Book.Build()
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/14 17:40:00 [只看该作者]

合成的条件是什么?在红色地方,分别填入各个表的条件。

 

" selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位, sum(数量) as 数量, sum(合同金额) as 合同金额,sum(申报数量) as 申报数量, sum(申报金额) as 申报金额 fro m (SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} " & 这里合成条件 & " UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表} " & 这里合成条件 & ") as a group by 项目名称,施工合同段,章节,支付编号,细目名称,单位"


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/12/14 18:56:00 [只看该作者]

老师,是以下这样吗,还是不行

Dim ids As String
For Each dr As DataRow In DataTables("中间计量表").DataRows
    ids = ids & "," & dr("_Identify")
Next
ids= ids.Trim(",")

Dim Book As New XLS.Book(ProjectPath & "Attachments\分项工程中期支付汇总表.xlsx")
Dim fl As String = ProjectPath & "Reports\分项工程中期支付汇总表.xlsx"
book.AddDataTable("分项工程中期支付汇总表","xlgl"," selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位, sum(数量) as 数量, sum(合同金额) as 合同金额,sum(申报数量) as 申报数量, sum(申报金额) as 申报金额 fro m (SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单} " &  " And [项目名称] = '" & dr("项目名称") & " And [施工合同段] = '" & dr("施工合同段") & " UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表} " & " And [项目名称] = '" & dr("项目名称") & " And [施工合同段] = '" & dr("施工合同段") & ") as a group by 项目名称,施工合同段,章节,支付编号,细目名称,单位" )
Book.Build()
Book.Save(fl)
Dim Proc As New Process
Proc.File = fl
Proc.Start()

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/14 20:45:00 [只看该作者]

book.AddDataTable("分项工程中期支付汇总表","xlgl"," selec t 项目名称,施工合同段,章节,支付编号,细目名称,单位, sum(数量) as 数量, sum(合同金额) as 合同金额,sum(申报数量) as 申报数量, sum(申报金额) as 申报金额 fro m (SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 数量, 数量 * 单价 as 合同金额, 0.0 as 申报数量, 0.0 as 申报金额 FRO M {工程量清单}  where [项目名称] = '" & dr("项目名称") & "' And [施工合同段] = '" & dr("施工合同段") & "' UNION ALL SELEC T 项目名称,施工合同段,章节,支付编号,细目名称,单位, 0, 0, 申报数量, 申报数量 * 单价  FRO M {中间计量表} where  [项目名称] = '" & dr("项目名称") & "' And [施工合同段] = '" & dr("施工合同段") & "') as a group by 项目名称,施工合同段,章节,支付编号,细目名称,单位" )

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/12/14 21:45:00 [只看该作者]

老师,显示错误:

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


 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/12/14 22:00:00 [只看该作者]

提示很明显了,没有dr这行数据。项目名称条件从哪来?

 回到顶部
总数 29 上一页 1 2 3 下一页