birt-j脚本调试 & 动态sql的实现
一个比较好的birt问题解决网址: http://www.myexception.cn/h/1335919.html
1,Birt的JavaScript脚本简单调试
Birt中的js脚本不能用alert直接弹出提示,也没法用断点跟踪(至少我没发现)。用一个简单方法可以打印,在脚本里写上
importPackage(Packages.java.lang);
System.out.println("test===");
就可以再控制台里打印出来,进行简单的调试了。
需要注意的是,必须要把报表部署在tomcat下才能打印,用Preview预览模式不能打印。
2,Eclipse Birt使用动态sql创建data set
来自: http://3ccoder.iteye.com/blog/545550
如这样一条sql query
- select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay
- from user_table user
- where user.second_name = ?
- and user.sex = ?
定义两个报表参数SecondName,Sex定义两个data
set参数secondname,sex并与报表参数关联,用户查看报表时必须要输入姓和性别作为查询条件,
姓李的人,性别不输,
and user.sex = null
显然这样的sql是查不出结果的,
select ... from ... where user.second_name =
'李'就合理了,
一、date set编辑器中有property binging的属性,可以在右边的query text框中设输入sql语句,或者用expression生成器辅助生成sql语句
- var query = " select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay";
- query += " from user_table user";
- query += " where user.second_name = ?"
- if(param["Sex"].value != null){
- query += " and user.sex = '" + param["Sex"].value + "'";
- }
- this.text = query;
我试了一下,这种方法没有成功,可能我哪里写的有误吧。
二、利用script,在data set的before open事件中
- var query = " select user.first_name firstName,user.second_name secondName,user.sex sex,user.age age,user.birth_day birthDay";
- query += " from user_table user";
- query += " where user.second_name = ?"
- var sex = reportContext.getParameterValue("Sex");
- if(sex != null){
- query += " and user.sex = '" + sex + "'";
- }
- this.queryText = query;
我试了一下,这种方法成功了
var termId = reportContext.getParameterValue("终端ID"); 这种形式是正确大的
params["自助银行"] , 这种拿不到值,需要改掉
// 机构号
this.queryText+=" where SELFCUR.BIZ_MAIN_TRANS.BANK_NO='" + params["自助银行"] + "'";
// 终端号或者柜员号二选一
if(params["终端ID"]!= null){
this.queryText += " and SELFCUR.BIZ_MAIN_TRANS.TERM_ID= '" + params["终端ID"] + "'";
}else{
this.queryText += " and SELFCUR.BIZ_MAIN_TRANS.TELL_NO= '" + params["柜员ID"] + "'";
}
这两种方法的区别在于:第一种方法是在报表run的时候创建data set,因此在data
set编辑器里是没有办法像通常那样预览的
set之前会创建data set因此可以像通常那样预览数据集结果等等
第一种方法中用param["sex"].value获得Sex参数值,而第二种方法需要利用reportContext来获取Sex参数的值
另外需要注意的是在拼凑sql时要细心,例如如果参数是String类型时前后一定要加上一对''(具体的取决于所使用的数据库,笔者使用的是oracle)
birt-j脚本调试 & 动态sql的实现的更多相关文章
- 浏览器调试动态js脚本
前两天拉取公司前端代码修改,发现在开发者工具的sources选项里边,居然没有列出来我要调试的js脚本,后来观察了一下,脚本是动态在页面里引入的,可能是因为这样所以不显示出来,但是如果不能断点调试,只 ...
- Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)
Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...
- Java数据持久层框架 MyBatis之API学习七(动态 SQL详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- db2存储过程动态sql被截断
编写存储过程,使用动态sql时,调试时发现变量赋值后被截断. 关键代码如下: 实现的效果是先把上下游做对比的sql语句和相关参数存入RKDM_DATA_VOID_RULE, 执行存储过程后把两个sql ...
- mybatis动态sql——(六)
0 什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 通过mybatis提供的各种标签方法实现动态拼接sql.
- MySQL通过视图(或临时表)实现动态SQL(游标)
>参考de优秀文章 写MySQL存储过程实现动态执行SQL Dynamic cursor in stored procedure MySQL通过视图(或临时表)实现动态SQL(游标). 因在实现 ...
- 【长文】Spring学习笔记(七):Mybatis映射器+动态SQL
1 概述 本文主要讲述了如何使用MyBatis中的映射器以及动态SQL的配置. 2 MyBatis配置文件概览 MyBatis配置文件主要属性如下: <settings>:相关设置,键值对 ...
- Mysql - 游标/动态sql/事务
游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...
- 用脚本定时监控SQL Server主从一致性
用脚本定时监控SQL Server主从一致性 首先说一下我们的环境 我们使用的是事务复制,复制是单向的,主服务器和从服务器都在同一个机房,当然不同机房也可以,只需要改一下IP和端口 下面的脚本在我们的 ...
随机推荐
- MySQL 网络访问连接
查看 /etc/hosts配置文件 [hotspot@bogon ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localh ...
- 程序员的自我修养五Windows PE/COFF
5.1 Windows的二进制文件格式PE/COFF PE文件格式事实上与ELF同根同源,它们都是由COFF格式发展而来. 5.2 PE前身——COFF 在win下,Command Prompt fo ...
- Android 文字绘制(DrawText)技术总结
这里的绘制文字不是直接调用TextView.setText(String content)去展示文字内容.而是在View上面通过 canvas.drawText(text, x, y,textPain ...
- 这可能是新手最容易入门的JVM讲解(不过是一场恋爱)
作者:请叫我红领巾,转载请注明出处http://www.cnblogs.com/xxzhuang/p/7453746.html 一.写在前面 首先,本篇文章并没有涉及原理,而是在笔者撸了<深入理 ...
- 谈一谈applet踩过的坑
看完我这篇文章,你会简单使用applet,你可以使用web项目读取运行用户电脑上的dll或者其他任何你想干的事.js与直接调用applet类里面的方法,并获取返回值. 不谈项目背景了.直接干货干起来. ...
- Quartz总结
前言 最近项目中有使用到Quartz,得空便总结总结,顺便记录一下这种设计模式,毕竟"好记性不如烂笔头". 搭建 pom文件: <dependency> <gro ...
- [Caffe]史上最全的caffe安装过程
Linux下的GPU版Caffe安装方法 系统环境:Ubuntu 14.04LTS + NV TitanX 1.1 (可选)显卡驱动的安装(有风险) 如果需要重装,需要先卸载已有版本 sudo apt ...
- django日期比较
from django.db import models from django.utils import timezone import datetime # Create your models ...
- [js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表
所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理, ...
- java值传递与引用传递实例
public class Test2 { public static void main(String[] args) { int[] arr=new int[5]; arr[0]=10; arr[1 ...