关于在填报属性里传递SQL存储过程的问题

做了一个填报前的事件,想在填报前获取单号

image.png

做成了存储过程的方式,但是参数传参那块是不是我的有问题?好像单号传不过去

下面的$单号,是报表的参数

sql= "exec djhm 'S-SCCJYCH','$单号','','','' ";

image.png

//采购订单号
var sql= "exec djhm 'S-SCCJYCH','$单号','','','' ";
var num=FR.remoteEvaluate('=sql("erp","'+sql+'",1,1)');
contentPane.setCellValue("L1",null,num);


最后写成了这段代码解决了,感谢《孤陌》的提示。

//获取号
var area2 = contentPane.parameterEl.getWidgetByName("号").getValue();
var sql = "{CALL djhm ( 'S-SCCJYCH', '"+ area2 +"','','','' )}";
var num=FR.remoteEvaluate('=sql("erp","'+sql+'",1,1)');
contentPane.setCellValue("L1",null,num);

SQL执行语句是:

  EXEC djhm  'S-SCCJYCH', '00001','','',''


FineReport afr751116 发布于 2020-1-18 13:01 (编辑于 2020-1-18 20:38)
1min目标场景问卷 立即参与
回答问题
悬赏:8 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
孤陌Lv6资深互助
发布于2020-1-18 13:44(编辑于 2020-1-18 14:25)

首先 你这样肯定是不可以的

 你应该写JS 获取参数模板控件的值才可以啊

var area2 = contentPane.parameterEl.getWidgetByName("area").getValue();

这样才可以啊


JS 要这样

  1. var sql = "{CALL dbo.usp_tran_cleardata ('${ "+ 参数 +" }' )}";  //dbo.usp_tran_cleardata存储过程

  2. var result = FR.remoteEvaluate('sql("JDBC4","' + sql + '",1,1)');  //JDBC4需要数据库连接一致


  • afr751116 afr751116(提问者) var area2 = contentPane.parameterEl.getWidgetByName(\"单号\").getValue(); var sql= \"exec djhm \'S-SCCJYCH\',\'area2\',\'\',\'\',\'\' \"; var num=FR.remoteEvaluate(\'=sql(\"erp\",\"\'+sql+\'\",1,1)\'); contentPane.setCellValue(\"L1\",null,num); 类似这样吗?将单号先传给area2,在查询时再套进去?好像上面这样也不对,会变成area2的字符串
    2020-01-18 14:19 
  • 孤陌 孤陌 回复 afr751116(提问者) 参数不可以直接这样用要这样 var sql = \"{CALL dbo.usp_tran_cleardata (\'${ \"+ 参数 +\" }\' )}\"
    2020-01-18 14:21 
  • afr751116 afr751116(提问者) 回复 孤陌 回复不可以贴代码,我在上面编缉了一下,你看最后那段代码,是那样不
    2020-01-18 14:43 
  • 孤陌 孤陌 回复 afr751116(提问者) 也不对啊啊 哎 能不能注意看啊
    2020-01-18 15:04 
  • 孤陌 孤陌 回复 afr751116(提问者) SQL 哪里调用存储过程 你觉得写的和我一样吗??
    2020-01-18 15:05 
  • 3关注人数
  • 1572浏览人数
  • 最后回答于:2020-1-18 20:38
    请选择关闭问题的原因
    确定 取消
    返回顶部