以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- ★★★Excel报表的跨记录调用数值问题★★★ (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23669) |
||||
-- 作者:zoomify -- 发布时间:2012/9/16 14:05:00 -- ★★★Excel报表的跨记录调用数值问题★★★ 有一个表中有某列记录如下: 页数(页的数量)
2
3
3
4
输出成Excel报表的时候,希望变成页开始的位置(页次),如:
1(第一行是从页次1开始)
3(这个记录是从3开始:1+2)
6(这个记录是从6开始:1+2+3 或者是上一个记录的3+3)
10(这个记录是从10开始:1+2+3+4 或者是上一个记录的6+4)
设置Excel报表公式如下:
<iif(<index>=1,1,[页数-1]+[页数])>
希望得到:当index是1的时候,页次一定等于1,否则等于上一个记录的值(页次)加上本记录的页数。
但这个公式是有问题的,请问专家正确的设置如何做呢?自己琢磨了很久,还是弄不出来。
[此贴子已经被作者于2012-9-16 16:33:30编辑过]
|
||||
-- 作者:pyh6918 -- 发布时间:2012/9/16 14:36:00 -- <iif(<index>=1,1,[@表名,页数,-1]+[@表名,页数])>
这样你试一下!
|
||||
-- 作者:zoomify -- 发布时间:2012/9/16 16:31:00 -- 楼上说的办法用了还是不行,用代码绕了个弯才搞定,但这样代价很大,每个明细记录都会查询一次数据库。 有没有专家知道怎么做呢,其实就是想知道明细数据扩展的时候,上一条记录的值。 代码解决办法如下:(用范例的出库单报表测试,数量用来模拟需要转变的页次,程序打包到了附件)
Select Case e.Book.TempLate
|
||||
-- 作者:lin_hailun -- 发布时间:2012/9/17 0:46:00 -- excel模板的公式被清除,不过听说新版本会增加楼主需要的功能。 代码的话,也可以精简下的。用到静态变量。 Static sum As Integer = 1 Select Case e.Book.TempLate Case "出库单" If e.DataRow IsNot Nothing AndAlso e.Region = "出库明细" Then e.Book.Marks("数量") = sum sum = sum + e.DataRow("数量") Else e.Book.Marks("数量") = "" End If End Select |
||||
-- 作者:lin_hailun -- 发布时间:2012/9/17 0:47:00 -- 不过静态变量是一直存储的,如果你生成报表多次的话,建议使用全局变量,在生成报表之后,把全局变量赋值为开始的值。 |
||||
-- 作者:pyh6918 -- 发布时间:2012/9/17 7:29:00 -- 加一列,把上一行的页数取过来。 |