[ABI 5.1] 复杂报表制作求助

39952
27

小灰灰1 数据达人Lv4

发表于2020-7-27 13:41

悬赏1

已解决

楼主

报表需求是这样的,我现在只做出来了前面的明细数据扩展
问题在于下面几个地方的实现:
1、一年12个月份的扩展,在abi里是一个个都写出来还是说可以有表达式动态扩展出来?
2、每个月的周数是不一样的,尤其是2月份,这个怎么搞动态判断处理呀?
3、交叉部分的数据,是各种和前面数据的对比判断,这样复杂逻辑的可以在单元格直接搞么?

最近看过此主题的会员

esen_56A4TI9I2P

wanghong

最佳答案

xxxl

发表于2020-7-27 13:41

只看该作者

取消 关注该作者的回复

本帖最后由 xxxl 于 2020-7-30 16:29 编辑
小灰灰1 发表于 2020-7-29 09:40
这个报表在制作过程中需要解决的问题和实现方法总结:
1、月份和周数的扩展,这个需要在数据库表中增加辅助 ...


关贴总结:
这个报表在制作过程中需要解决的问题和实现方法总结:
1、月份和周数的扩展,这个需要在数据库表中增加辅助物理表
然后写sql主题表搞成一个结果集出来
2、日期格式处理需要自己各种截取处理:=left(strtodate(left(ceshi21.scjxrq,9),"yyyy-mm-dd"),10)
3、交叉取值格的表达式为:=if(GRID1.E5="年" and mid(ASSTR(GRID1.F3$),1,len(ASSTR(GRID1.F3$))-2)=MONTH(GRID1.D5) and DAY(GRID1.D5 ) >=(mid(ASSTR(GRID1.F4$),1,len(ASSTR(GRID1.F4$))-2)-1)*7+1 and DAY(GRID1.D5)<=mid(ASSTR(GRID1.F4$),1,len(ASSTR(GRID1.F4$))-2)*7,"o",if(GRID1.E5="月" and mid(ASSTR(GRID1.F3$),1,len(ASSTR(GRID1.F3$))-2)>=MONTH(GRID1.D5) and DAY(GRID1.D5)>=(mid(ASSTR(GRID1.F4$),1,len(ASSTR(GRID1.F4$))-2)-1)*7+1 and DAY(GRID1.D5)<=mid(ASSTR(GRID1.F4$),1,len(ASSTR(GRID1.F4$))-2)*7,"o",
if((GRID1.E5="天" and mid(ASSTR(GRID1.F3$),1,len(ASSTR(GRID1.F3$))-2)=MONTH(GRID1.D5)) OR (GRID1.E5="天" and mid(ASSTR(GRID1.F3$),1,len(ASSTR(GRID1.F3$))-2)>MONTH(GRID1.D5)),"o","")))
因为单纯表元取出来的结果不对,所以里面用的了各种截取,导致表达式比较复杂
感谢楼主分享!

27个回答

只看楼主

xxxl 数据领袖Lv6

发表于2020-7-27 13:55

只看该作者

取消 关注该作者的回复

沙发

1 2问题您这里的月份是怎么进行存储的呢,是数据库中已经存在的数据吗
3交叉部分如果是数据库中存在数据的话使用 交叉浮动就可以实现

小灰灰1 数据达人Lv4

发表于2020-7-27 14:06

只看该作者

取消 关注该作者的回复

板凳

xxxl 发表于 2020-7-27 13:55
1 2问题您这里的月份是怎么进行存储的呢,是数据库中已经存在的数据吗
3交叉部分如果是数据库中存在数据的 ...


数据库里的数据是这样的,月份肯定是从1扩展显示到12,只是这个扩展能不能动态搞,还是说必须写死?
每个月份下需要扩展出来周数,例如2月份如果是28天,那么我要扩展出来1  2   3  4,否则就是到5,这也是需要动态判断处理和扩展的

交叉部分是需要自己按照需求写表达式计算的,不是简单的直接取数就完了

所以这就是三个问题了

xxxl 数据领袖Lv6

发表于2020-7-27 14:38

只看该作者

取消 关注该作者的回复

地板

小灰灰1 发表于 2020-7-27 14:06
数据库里的数据是这样的,月份肯定是从1扩展显示到12,只是这个扩展能不能动态搞,还是说必须写死?
每个 ...

就是说您这里的月浮动是根据实际要求来浮动出多少月多少月 下面的周同样是根据月来浮动实际的周对吧

小灰灰1 数据达人Lv4

发表于2020-7-27 14:49

只看该作者

取消 关注该作者的回复

5#

xxxl 发表于 2020-7-27 14:38
就是说您这里的月浮动是根据实际要求来浮动出多少月多少月 下面的周同样是根据月来浮动实际的周对吧 ...

不是,月是固定的,就是12个月
周是按照年份下各个月的周数,比如有的2月份是28天,有的是29天,对应就分别是4周和5周

xxxl 数据领袖Lv6

发表于2020-7-27 15:29

只看该作者

取消 关注该作者的回复

6#

小灰灰1 发表于 2020-7-27 14:49
不是,月是固定的,就是12个月
周是按照年份下各个月的周数,比如有的2月份是28天,有的是29天,对应就分 ...

这样做动态的浮动不好做 但是如果是单纯的取到周数是可以用WOFM(D)   WOFY(D)来做的

小灰灰1 数据达人Lv4

发表于2020-7-27 15:33

只看该作者

取消 关注该作者的回复

7#

xxxl 发表于 2020-7-27 15:29
这样做动态的浮动不好做 但是如果是单纯的取到周数是可以用WOFM(D)   WOFY(D)来做的 ...

现在需求要求是这样的,有没有变相实现的方法或者思路呀?

xxxl 数据领袖Lv6

发表于2020-7-27 15:58

只看该作者

取消 关注该作者的回复

8#

小灰灰1 发表于 2020-7-27 15:33
现在需求要求是这样的,有没有变相实现的方法或者思路呀?

只有考虑再数据库表中再加一个有关周的数据了

小灰灰1 数据达人Lv4

发表于2020-7-27 16:23

只看该作者

取消 关注该作者的回复

9#

xxxl 发表于 2020-7-27 15:58
只有考虑再数据库表中再加一个有关周的数据了

这个加也不好加的呀,年份不固定,周数也不固定的呀,主要牵扯到2月份的周数
这个搞不了的话,下面的交叉判断有思路搞么?

xxxl 数据领袖Lv6

发表于2020-7-27 16:51

只看该作者

取消 关注该作者的回复

10#

小灰灰1 发表于 2020-7-27 16:23
这个加也不好加的呀,年份不固定,周数也不固定的呀,主要牵扯到2月份的周数
这个搞不了的话,下面的交叉 ...

交叉浮动这一块是需要做表达式的计算弄过滤条件这种的可以试试

小灰灰1 数据达人Lv4

发表于2020-7-27 17:32

只看该作者

取消 关注该作者的回复

11#

xxxl 发表于 2020-7-27 16:51
交叉浮动这一块是需要做表达式的计算弄过滤条件这种的可以试试

这个需求也没那么简单的哦,他需要根据检修日期和周期单位来进行算,比如第一次检修周期是 1月1号,如果周期单位是月,那么每月的第一周标出,如果检修周期是日,那么每周都标出。
这种按照ABI的逻辑能搞的了么?

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号