js执行sql语句 一直删除失败,是没写对吗

contentPane.curLGP.getCellValue(1, 0);

//获取文本框控件所在单元格的值 

var mm=contentPane.curLGP.getCellValue("A5");

var v_sql ="SQL(\"wanxu\",\"DELETE FROM scott.WHNY_NS  WHERE mm ='"+mm+"'\",1,1)";

alert(v_sql);

var a = FR.remoteEvaluate(v_sql );

if(a == 0){

  FR.Msg.toast('删除成功');

}else{

  FR.Msg.toast('删除失败');

}


603594138 发布于 2019-11-13 08:49
1min目标场景问卷 立即参与
回答问题
悬赏:6 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
2
吴浩Lv6中级互助
发布于2019-11-13 09:38
var mm=contentPane.curLGP.getCellValue("A5");
var v_sql ="SQL(\"wanxu\",\"DELETE FROM scott.WHNY_NS  WHERE mm ='"+mm+"'\",1)";
FR.Msg.confirm("警告","确定要删除吗?",function(value){
 
 if(value){
  FR.remoteEvaluate(v_sql); 
 }else{
  return false;
 }
})

试试吧,我之前做过这个功能,是能删除的

  • 603594138 603594138(提问者) 厉害
    2019-11-13 10:08 
  • hhf365 hhf365 亲测, 正常运行, 无需commit.
    2020-09-27 20:20 
  • Lu18 Lu18 直接把数据库暴露在js里面,这样真的好吗?
    2020-12-04 17:23 
最佳回答
1
hpmpkkLv3中级互助
发布于2019-11-13 08:57

你先在数据库执行看一下报错不,我看着语句好像没撒问题,然后再看看你是不是限制remoteEvaluate的执行了,看下这个文档-https://help.finereport.com/doc-view-2454.html

  • 603594138 603594138(提问者) contentPane.curLGP.getCellValue(1, 0); //获取文本框控件所在单元格的值 var mm=contentPane.curLGP.getCellValue(\"A5\"); var v_sql = String.format(\"SQL(\'wanxu\', \'DELETE FROM scott.WHNY_NS WHERE mm =\\\'{0}\\\'\',1)\", mm); alert(v_sql); var a = FR.remoteEvaluate(v_sql ); if(a == 0){ FR.Msg.toast(\'删除成功\'); }else{ FR.Msg.toast(\'删除失败\'); } 我改成这样了,提示删除成功了,但是数据库里没变,我用的Oracle数据库delete后应该需要commit,那应该怎么写啊
    2019-11-13 09:11 
  • hpmpkk hpmpkk 回复 603594138(提问者) 在用这个函数执行commit可以把,或者直接把,commit放在sql语句后面,用分号隔开
    2019-11-13 09:16 
  • 603594138 603594138(提问者) 回复 hpmpkk 放哪里啊
    2019-11-13 09:17 
  • hpmpkk hpmpkk 回复 603594138(提问者) \\\'DELETE FROM scott.WHNY_NS WHERE mm =\\\\\\\'{0};commit
    2019-11-13 09:33 
  • 603594138 603594138(提问者) 回复 hpmpkk contentPane.curLGP.getCellValue(1, 0); //获取文本框控件所在单元格的值 var mm=contentPane.curLGP.getCellValue(\"A5\"); var v_sql = String.format(\"SQL(\'wanxu\', \'DELETE FROM scott.WHNY_NS WHERE mm =\\\'{0}\\\'\',1)\", mm); var v_sql2 = String.format(\"SQL(\'wanxu\',\'commit\',1)\"); alert(v_sql); alert(v_sql2); var a = FR.remoteEvaluate(v_sql ); if(a == 0){ FR.Msg.toast(\'删除成功\'); }else{ FR.Msg.toast(\'删除失败\'); } var b = FR.remoteEvaluate(v_sql2 ); if(b == 0){ FR.Msg.toast(\'提交成功\'); }else{ FR.Msg.toast(\'提交失败\'); } 我写了这个js,提示提交成功但是数据库里的数据没删掉
    2019-11-13 09:34 
最佳回答
1
浪兔Lv7初级互助
发布于2019-11-13 09:06

FR.remoteEvaluate这个是不接受返回受影响的行数的。

他只接受查询出来的结果集

而增删改是返回受影响的行数。


所以你的a在这里永远是 空 或者 ‘’或者 0  

所以一直提示删除失败。

  • 603594138 603594138(提问者) 我用的oracle数据库,delete后需要commit,应该怎么写啊
    2019-11-13 09:08 
最佳回答
0
losthuaLv3见习互助
发布于2020-7-9 14:32

请问下有解决问题么,我也遇到的同样的问题

  • 6关注人数
  • 2685浏览人数
  • 最后回答于:2020-7-9 14:32
    请选择关闭问题的原因
    确定 取消
    返回顶部