報表SQL使用IN,在定期派送中,輸入類型=數據庫該如何用

您好:

https://bbs.fanruan.com/wenda/question/52557.html


SQL中,用IN去接參數

目前 and p.goal_prdno in ('${prd_grpno}')  ,並且 於設定中,設定分隔為「','」

報表中這樣可以過!


但 我定期排程中,

輸入方式:預設 ,輸入字串「A1','A2','A3',A4」, 可以正常派送結果

但這不是解決方式

我用數 輸入方式:數據庫  ,使用全域的Dataset ,

他是select col from table 

等於撈出 A1

               A2

               A3

但結果,不正確,也不知道他是撈哪一些組合?

請問這有辦法查 及解決嗎?

謝 謝!







简道云 taken 发布于 2020-7-30 21:56
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
zjc@Lv3初级互助
发布于2020-7-31 09:41(编辑于 2020-8-5 15:24)

下拉复选框属性返回值类型设置为数组,然后where条件这么处理:

WHERE 1=1

 ${IF(LEN(线别) == 0,"","AND 线别 IN('" + JOINARRAY(线别, "','") + "')")}


说明:JOINARRAY(线别, "','")将复选框返回的数组用','分隔,再加上前面的'和后面的',刚好就把数组分割成

'a','b','c','d'的形式了

这三个参数的取值都用公式而不是字符串



1.设置日志级别为DEBUG,保存

2.用帆软设计器预览报错的报表

3.在帆软设计器显示日志的那点击查看打印的sql

4.看那个参数传递的有问题

image.png

image.png


image.png

我说的下拉复选框属性返回值类型设置为数组是上图这个,不是declare @prd_grpno as varchar(100); ,

你参数名有@符号吗,没有就去掉,这是mysql调存储过程这么用

  • taken taken(提问者) 感謝您! OK了!
    2020-07-31 16:08 
  • zjc@ zjc@ 回复 taken(提问者) 不客气
    2020-08-03 08:59 
  • taken taken(提问者) 回复 zjc@ 不好意思,在重新測試 1.「 ,」 問題是有PASS,但 實際篩選結果,卻不是要的答案,也就是 不管我如何篩選,他的答案似乎都是 全選 我選 G1,G2 與 G1,G2,G3 都是 全選的結果... 2.當我用 定時調度, 用 「數據集」,但結果確跑出 9張, 應該就是我選單 內的數目9個 所以「數據集」是,每一個選項,跑一張報表嗎? 可否 全部選項 只跑一張報表 謝謝!
    2020-08-04 17:45 
  • zjc@ zjc@ 回复 taken(提问者) 为什么你写的是繁体字?
    2020-08-04 18:01 
  • taken taken(提问者) 回复 zjc@ 再麻煩您了,謝謝!
    2020-08-04 19:22 
最佳回答
0
张艳abbyLv5中级互助
发布于2020-7-30 22:26

你的参数是通过下拉复选框选择的吗?如果是的话,可以选中下拉复选框控件-属性-将返回值类型设置成"字符串",并使用如图所示分隔符3.png

  • taken taken(提问者) 您好:已經有設定 這一個字串符號了
    2020-07-31 08:47 
最佳回答
0
孤陌Lv6资深互助
发布于2020-7-31 07:43

下拉复选多值模糊查询-https://help.finereport.com/doc-view-2499.html 看你上一个帖子 是想要复选多值模糊查询吧? 看这个

  • taken taken(提问者) 您好:這一個方案 MSSSQL 1.移掉全域的SQL INJECTIION ,蠻危險的 2.他 LIKE OR LIKE 沒有( ) 起來,會不會 結果擴大了 謝謝!
    2020-07-31 12:24 
  • 4关注人数
  • 389浏览人数
  • 最后回答于:2020-8-5 15:24
    请选择关闭问题的原因
    确定 取消
    返回顶部