在动态参数注入中,加入公式col(),实现当我这个公式填在“A”列,就返回“1”,填在“B”列返回2

如何在动态参数注入中,加入公式col(),实现当我这个公式填在“A”列,就返回“1”,填在“B”列返回“2”,填在“C”列就返回“3”。类似excel的column(),需要自动的,我有50列需要注入动态参数,不能写50次的,“#”1234567。。。。

8.png

FineReport yzmaizfF8924216 发布于 2023-2-22 14:51 (编辑于 2023-2-23 09:57)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-2-22 14:58

如果你的字段是横向扩展的话这样试一下公式

=CONCATENATE("#",seq())

  • yzmaizfF8924216 yzmaizfF8924216(提问者) 还没用您的公式实验,但是我在动态参数里试过=CONCATENATE(\"#\",col())是不行的,应该是一个逻辑把
    2023-02-22 21:42 
  • CD20160914 CD20160914 回复 yzmaizfF8924216(提问者) 不知道你要什么功能。我们也只是截图中猜测。你可以先放在单元格里面看。。出来的结果是什么。。用我的公式。col如果是扩展的话,它的列号不会变,但是seq会变的
    2023-02-22 21:44 
  • yzmaizfF8924216 yzmaizfF8924216(提问者) 回复 CD20160914 我试过您的公式了,还是不行,您抽空看下我新添加的图片,=CONCATENATE(\"#\",seq()),确实能计算得到字符串“#1”“#2”但是动态参数注入还是拿不到这个结果。
    2023-02-23 09:41 
  • CD20160914 CD20160914 回复 yzmaizfF8924216(提问者) 那你看一下楼上的的文件了。是不是你要的了。
    2023-02-23 09:44 
  • CD20160914 CD20160914 回复 yzmaizfF8924216(提问者) 没有明白你的需求到底要做什么了。50列,不是字段放在单元格后,做横向扩展吗?
    2023-02-23 09:51 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-2-22 14:55(编辑于 2023-2-23 08:58)

用SEQ()

---------

image.png

image.png

----------

WorkBook1.rar

image.png

image.png

  • yzmaizfF8924216 yzmaizfF8924216(提问者) 要在动态参数里面,因为希望,sql跑出来的结果是多少列,我就显示多少列,不过一般不会超过50列,所以我的上限是50
    2023-02-22 21:41 
  • Z4u3z1 Z4u3z1 回复 yzmaizfF8924216(提问者) 根据你的这一条描述做了一个demo你参考参考(虽然不是动态参数)
    2023-02-23 08:59 
  • yzmaizfF8924216 yzmaizfF8924216(提问者) 回复 Z4u3z1 大佬,我直接在你的demo上把表名换成我的就可以,能跑但是有点慢,感觉明细比用动态参数慢,是因为什么,加了边框的原因吗。另外我自己照搬你的demo重写一份,怎么跑都不对,能帮忙看看吗 https://bbs.fanruan.com/wenda/question/146424.html
    2023-02-23 15:35 
最佳回答
0
悠闲自我Lv5见习互助
发布于2023-2-22 15:10

你直接写一个SQL,生成指定的数据列进行横向扩展就可以了,比如select '#' || level from dual connect by level<= 50

  • yzmaizfF8924216 yzmaizfF8924216(提问者) 没看懂,感觉你的答案,明显跟其它答案不同connect by level,我也是第一次见
    2023-02-22 21:40 
最佳回答
0
shirokoLv6资深互助
发布于2023-2-22 15:28(编辑于 2023-2-22 15:32)

我还以为要1转A,是A转1的话col()本来不就是这个功能吗,

你的问题在于50个字段要注入所以太麻烦了?

其实如果50个字段都属于一个数据集 只需要注入第一个

不同的话,你就只能分别注入啊,这没办法啊

  • yzmaizfF8924216 yzmaizfF8924216(提问者) 是的,col()本来就是这个功能,但是怎么在动态参数中写上#和col()运算出来的结果,。50个字段是同一个数据集
    2023-02-22 21:38 
  • shiroko shiroko 回复 yzmaizfF8924216(提问者) 不太懂你同一个数据集注入50个是什么意思,select * from 表 where a=1 and b=2 and c=3 and d=4 ... and z=26 ... 这个样子,什么样的需求需要这个样子
    2023-02-23 09:06 
  • yzmaizfF8924216 yzmaizfF8924216(提问者) 回复 shiroko 我更新了图片,您抽空看下
    2023-02-23 09:44 
最佳回答
0
孤陌Lv6资深互助
发布于2023-2-23 09:56(编辑于 2023-2-23 10:04)

分别是1# 2# 这样的 然后想用动态参数注入 实现自动扩展50列?? 那你为什么不做二行  把参数列字段 放上面 然后设置分组 横向扩展 然后你下面就不需要动态参数了  直接单元格过滤就可以了  最后你把上面一行隐藏掉就可以了;

我回答你的SEQ 为什么不可以  SEQ是根据左父格扩展 才生成的 你在动态参数里是没有左父格一说的 所以才出现你说的动态参数没有用 

  • 5关注人数
  • 395浏览人数
  • 最后回答于:2023-2-23 10:04
    请选择关闭问题的原因
    确定 取消
    返回顶部