------在数据集的beforeopen方法中替换:
var sql = "select * from tablename where 1=1 and ...";
this.queryText = sql;
++++++ 说明this.queryText 是指整个sql语句
------ birt的修改记录
所属项目org.eclipse.birt.report.viewer
修改类 所属包及类名org.eclipse.birt.report.service.ReportEngineService
修改目的:将session中的sql放在上下文中
修改方法:
private void runAndRenderReport(HttpServletRequest request,
IReportRunnable runnable, OutputStream outputStream, String format,
Locale locale, boolean rtl, Map parameters, boolean masterPage,
boolean svgFlag, Boolean embeddable, List activeIds,
HTMLRenderContext htmlRenderContext) throws RemoteException {
//lbd add20061117
context.put("hql", request.getSession().getAttribute("hql"));
}
所属项目org.eclipse.birt.report.engine
修改类 所属包及类名org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter
修改目的:将上下文中的sql取出依据dataSet的名字替换设计文件中的slq
修改方法:
IOdaDataSetDesign newOdaDataSet( OdaDataSetHandle modelDataSet,
ExecutionContext context ) throws BirtException
{// lbd modify 2006117
if (queryTextBinding != null) {
System.out.print("替换以前的sql" + queryTextBinding + "\r\n");
Map map = context.getAppContext();
Map sqlmap = (Map) map.get("hql");
if (sqlmap.get(dteDataSet.getName()) != null) {
queryTextBinding = (String) sqlmap.get(dteDataSet.getName());
System.out.print("替换以后的sql" + queryTextBinding + "\r\n");
}
}
if (needPropertyBinding() && queryTextBinding != null
&& queryTextBinding.length() > 0) {
dteDataSet
.setQueryText(evaluatePropertyBindingExpr(queryTextBinding));
} else {
System.out.print("替换以前的sql" + modelDataSet.getQueryText() + "\r\n");
Map map = context.getAppContext();
Map sqlmap = (Map) map.get("hql");
if (sqlmap.get(modelDataSet.getName()) != null) {
queryTextBinding = (String) sqlmap.get(dteDataSet.getName());
System.out.print("替换以后的sql" + queryTextBinding + "\r\n");
}
//dteDataSet.setQueryText(modelDataSet.getQueryText());
dteDataSet.setQueryText(queryTextBinding);
}
}
------ 开发人员作带打印的查询时注意事项
在有打印的界面时要在查询的action方法中添加如下的代码:
//移除session中已经存在的数据集的map
if (request.getSession().getAttribute("hql") != null) {
request.getSession().removeAttribute("hql");
}
//将执行的hql转换为sql语句Employer是hql中的类名。AB01是数据库中要查询的表名
hql=hql.replace("Employer","AB01" );
hql=hql.replace("as","" );
//构造数据集的map dataSet1是数据集的名字, hql是对应的sql语句
HashMap map = new HashMap();
map.put("dataSet1", hql);
//将数据集的map放与session中
request.getSession().setAttribute("hql", map);
目的是将查询的sql保存在session中以便在打印时使用该sql。
另外在数据库SYSPRINTCONFIG表中插入如下数据
DATASETNAME =dataSet1 ;//对应map中的dataSet1
SQL = Select ab01.aab001, ab01.aaa021,ab01.aab003, ab01.aab004,ab01.aab019, ab01.aae004,ab01.aae005,ab01.aab020,ab01.aae119,ab01.aab021 From AB01 where 1=1
//对应map中的hql
Descript=基本信息管理 -> 单位信息管理 -> 单位查询: 单位查询
//对应页面的功能信息
Actionid=com.lbs.apps.basicinfo.rp.EmployerAction.printEmployer
//对应打印action的包类及方法
fillepathname=reports\basicinfo\employerList.rptdesign
//对应报表设计文件的相对路径及文件名。该字段在报表设计完毕以后在修改。开始时为空!
--------
实施人员开发报表注意事项
实施人员在做报表打印时数据集的名字和对应的sql语句从数据库的SYSPRINTCONFIG表中取得
比如做如下的打印
基本信息管理 -> 单位信息管理 -> 单位查询: 单位查询的打印可以利用如下语句来得到相关的数据集名字和对应的sql
select * from sysprintconfig where Descript like '基本信息管理 -> 单位信息管理 -> 单位查询: 单位查询'
这里得到
DATASETNAME =dataSet1 ;//对应map中的dataSet1
SQL = Select ab01.aab001, ab01.aaa021,ab01.aab003, ab01.aab004,ab01.aab019, ab01.aae004,ab01.aae005,ab01.aab020,ab01.aae119,ab01.aab021 From AB01 where 1=1
Descript=基本信息管理 -> 单位信息管理 -> 单位查询: 单位查询
Actionid=com.lbs.apps.basicinfo.rp.EmployerAction.printEmployer
将你设计的报表的数据集用dataSet1作为报表设计中的data set的名字
Select ab01.aab001, ab01.aaa021,ab01.aab003, ab01.aab004,ab01.aab019, ab01.aae004,ab01.aae005,ab01.aab020,ab01.aae119,ab01.aab021 From AB01 where 1=1
作为你的报表设计中的sql
其他的按照原先的做就可以了,开发完毕以后和开发人员联系把报表信息添加到系统中
如果找不到相应的信息请于开发人员联系。
++++++++ 修改的结果是 可以把整个sql 或者是参数放在session
分享到:
相关推荐
ThunderBird常用组件
《flappy bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红。2014年2月,《Flappy Bird》被开发者本人从苹果及谷歌应用商店撤下。2014年8月份正式...
flappybird图像音频资源,用于配合《简单小游戏flappybird制作》相关博客。
该资源是flappy bird游戏涉及到的素材资源,包括背景、管道、小鸟的不同状态以及游戏开始、重启、失败等。
flappybird游戏资源,图片+音效
FLappy Bird,《flappybird》是由来自越南的独立游戏开发者DongNguyen所开发的作品,游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍。
全flappybird套图片和音效,学习开发必备
https://blog.csdn.net/cb269267/article/details/20214107 按照此博主操作分解出来的方法,如果需要可以去原博客自行操作,也可以直接下载本资源
Flappy Bird素材及公开课视频,适合自学开发FlappyBird游戏
内含FlappyBird源码、成果视频、API、PPT以及所有的游戏资源
FlyBird(飞翔的小鸟)C语言编写
自己制作的flappy bird游戏完整源码及素材,符合游戏规则,包括历史记录
国外很火的一款游戏FlyBird 模仿的图片 音效 小鸟等相关资源文件
Thunderbird Setup 13.0.1.exe
利用C#编写的Flappy Bird简化版,自动记录成绩。
unity 开发 flappy bird 源码和资源包,完整 可运行
使用unity开发flappy bird游戏,实现了一个完整的Flappy Bird游戏的开发过程,包括游戏的开始、游戏进行的音效、计分、记录最高分以及游戏的终结等功能。该资源包括flappy bird游戏的完整代码,对应的文档以及录制的...
载入优化——选择主机,具有最出色的处理能力来开展X 程序。 支持常见的登录(Single Sign-on)——允许用户无缝连接到UNIX/Linux和X程序。 多语言支持——所有Hummingbird Host Access Solutions 产品除了在支持...
flappybird python版
html+jQuery实现FlappyBird游戏界面及操作,通过鼠标左键触发小鸟飞行事件,有兴趣的朋友可以二次开发,或自定义一些参数,增加一些趣味