finereport报表调用sql的存储过程?????能不能像SQLserver那样简单的供语法

finereport报表调用sql的存储过程?????能不能像SQLserver 那样简单的供语法,

搜索论坛,文档,没有一个简要的回答下,连调用都不知道在哪里调用,调用的语法是什么。。。。很无语。。

填报的做完了,在哪里能调用SQL的存储过程,将对应的列变量传入存储过程当作变量???image.png

image.png

做了如上测试,并没有效果

调用存储的问题已解决,怎么传入每行单元格的值做为参数,还是没有解决,请知道的大神指教一下!!!

FineReport 18020659076 发布于 2021-2-20 17:13 (编辑于 2021-2-22 15:44)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
烟尘Lv6高级互助
发布于2021-2-20 17:18(编辑于 2021-2-20 17:20)

js调用存储过程获取返回值:

按钮添加点击事件

js代码:

var sql = "调用过程语句";

var a = FR.remoteEvaluate('SQL("数据库", "' + sql + '", 1, 1)');

数据集调用存储过程代码:

SET NOCOUNT ON

EXEC [dbo].[过程名]

注意set nocount on ,sqlserver最好加上否则容易出错

  • 18020659076 18020659076(提问者) 这个我是看明白了 ,能帮我套个语法吗?finereport小白,SQL 有提供示例,很好套用,。这个finereport都找不到示例,一头雾水 。 var sql = \"exec spINSERT_PRDT \"; //spINSERT_PRDT 是存储名,参数想带C2单元格 ,D2单元格的值 参数要怎么跟 var a = FR.remoteEvaluate(\'SQL(\"数据库\", \"\' + sql + \'\", 1, 1)\') ; //数据库 和SQL这个没理解呢 。要套什么进去哦谢谢大佬
    2021-02-20 17:24 
最佳回答
0
浪兔Lv7初级互助
发布于2021-2-20 17:14

你的sql怎么写 数据集里面就怎么写。

  • 18020659076 18020659076(提问者) 想通过点击按钮调用。存储已经写好了,就是不知道这个finereport 怎么个调用法
    2021-02-20 17:16 
  • 18020659076 18020659076(提问者) 数据集写完,那是点什么按钮 进行调用 ???
    2021-02-20 17:17 
  • 浪兔 浪兔 回复 18020659076(提问者) 你是要在单元格内调用存储过程吗
    2021-02-20 17:43 
  • 18020659076 18020659076(提问者) 回复 浪兔 是的哦。填报的报表写好了,想用按钮调用个存储 。 存储里面的参数是取每行C2,D2的值
    2021-02-20 17:52 
最佳回答
0
深几许Lv4初级互助
发布于2021-2-20 17:23(编辑于 2021-2-20 17:24)

js代码写事件调用

顺便补充一下有关 SQL 函数调用存过

若是调用数据库存储过程取数,建议采用官方只支持查询语句 select 进行取数,其他写法(例如下面的写法), 返回的结果不能保证,不建议使用 :

=sql("dbname","{call  存储过程名  (参数1,参数2,...)}",1,1)

=sql("dbname","exec 存储过程名  参数1,参数2,...",1,1)

注:参数如果是字符串的话,参数需要用英文单引号引起来如:'参数1'。没有参数的需用?补全,例如=sql("140","{call  SCOTT.P_EMP (?) }",2,2)

  • 18020659076 18020659076(提问者) 参数的格式是什么 直接 C2 吗 ? =sql(\"dbname\",\"exec 存储过程名 C2,D2\",1,1) ,会有很多行,是逐行传参数进去的吗
    2021-02-20 17:40 
  • 深几许 深几许 回复 18020659076(提问者) 0.0 多参数我还真不清楚,我调用的是无参数的,用楼上js的方法做的
    2021-02-22 09:35 
最佳回答
0
maoningLv5初级互助
发布于2021-2-22 10:51

var text="123";

var sql="SQL(\"数据连接名\",\"{call 存储过程名('"+text+"',?)}\",1,1)";

var a=FR.remoteEvaluate(sql);

alert(a);

--存储过程要有输出,哪怕过程不用输出也要写个假数据输出

  • 18020659076 18020659076(提问者) 固定参数的已经实现了,比如您上面写的传入123 ,但是我想要的效果是传入单元格的数据,比如C2 是从excel 导入的 ,并且会填充很多行,如C3,C4
    2021-02-22 11:07 
  • maoning maoning 回复 18020659076(提问者) var text; for (var i=0;i<10;i++) { text=contentPane.getCellValue(2, i); var sql=\"SQL(\\\"数据连接名\\\",\\\"{call 存储过程名(\'\"+text+\"\',?)}\\\",1,1)\"; var a=FR.remoteEvaluate(sql); alert(a); }
    2021-02-22 11:10 
  • 18020659076 18020659076(提问者) 回复 maoning 这个语句报错~
    2021-02-22 15:09 
  • 5关注人数
  • 820浏览人数
  • 最后回答于:2021-2-22 15:44
    请选择关闭问题的原因
    确定 取消
    返回顶部