FR10.0实现根据参数查询报表

我想实现下面这个效果,请问该如何操作:

以字符串形式给一段LUA代码,类似像这样AddUnit({type ='human', name ='Rose', dbid =None})”我希望设计一个fr.cpt,实现根据我这段字符串的type ='human',来生成一个sql查询命令,去查询.db3数据库里的的DataHuman的表,然后模糊搜索name字段为'Rose'的,返回其dbid值,比如6201,回填到AddUnit({type ='human', name ='Rose', dbid =6201})这段话的DBID中;如果是AddUnit({type ='others', name ='XXX', dbid =None})” 就去查Dataothers的表。

之前有朋友说在一个单元格事件里,弄了个编辑结束事件,然后放下面代码

var code = this.getValue(); //获取输入的LUA程序代码 

alert("获取的代码:" + code);

var pstr = code.match(/type\s*=\s*‘(\w+)’/); //提取type参数的值 

alert("type匹配结果:" + pstr);

if (pstr != null) { //判断是否匹配成功 

var type = pstr[1]; //如果成功,取出第一个分组 

alert("type参数值:" + type);

fr.dataSetParameter.put(“type”, type); //赋值给数据集参数type 

}

//同理,对name参数也做同样的处理 

var pstr = code.match(/name\s*=\s*‘(\w+)’/); //提取name参数的值 

alert("name匹配结果:" + pstr);

if (pstr != null) {

var name = pstr[1];

alert("name参数值:" + name);

fr.dataSetParameter.put(“name”, name); //赋值给数据集参数name 

}

但是不知道怎么调试

在另一个单元格里用公式收返回值

replace(code, "dbid =None", "dbid =" + Dataset.dataSetRow("DBID"))

但是 运行了没反应

FineReport yzm543037 发布于 2023-4-1 15:16 (编辑于 2023-4-1 15:20)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
qiqits1984Lv6中级互助
发布于2023-4-1 17:30(编辑于 2023-4-2 14:12)

LUA代码不会写,两个是如何配合的?

fr.cpt 建立三个参数 type , name,dbid 

使用sql()查询语句查询 DataHuman的表 返回

SQL("db3","SELECT dbid FROM CUSTOMER where type =" + $type + “ and name =”+ $name ,1,1)

查询出结果

两条数语句都执行,根据条件取那条结果的数据。

测试.zip

  • yzm543037 yzm543037(提问者) 什么意思?
    2023-04-01 17:38 
  • yzm543037 yzm543037(提问者) 其实和LUA没关系。这个LUA代码就相当于字符串。难度是如何动态查询表,根据字符串里提取的type来决定查询什么表,另外不太知道这个怎么通过js实现
    2023-04-02 12:02 
  • 2关注人数
  • 516浏览人数
  • 最后回答于:2023-4-2 14:12
    请选择关闭问题的原因
    确定 取消
    返回顶部