`
java032
  • 浏览: 86823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

birt参数处理琐碎记录

    博客分类:
  • birt
阅读更多
------在数据集的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
分享到:
评论

相关推荐

    flappy bird素材及源码

    在Flappy Bird中,鸟的飞行高度受重力影响,玩家通过点击或触摸屏幕来控制鸟的上升力,这些都需要在游戏循环中进行处理。 此外,历史记录功能也是游戏的一个重要组成部分。这通常涉及到数据存储和读取,可能使用了...

    OpenCv制作的FlappyBird

    在FlappyBird游戏中,OpenCV可能被用来处理游戏画面,如背景提取、小鸟和管道的检测与跟踪。 1. 图像处理:OpenCV可以对图像进行各种操作,例如灰度化、直方图均衡化、滤波、边缘检测等。在FlappyBird项目中,可能...

    FlappyBird游戏源码

    3. 物理引擎:Unity内置的物理引擎处理Bird的飞行和碰撞。Bird的跳跃通过添加向上力来模拟,碰撞检测则利用Unity的Collider组件。 4. Shader和动画:Unity的Shader系统可以为游戏画面增添特效,而动画控制器则负责...

    thunderbird C++ 源代码

    在深入探讨Thunderbird C++源代码之前,我们先了解一下邮件处理软件的基本工作原理和C++编程语言。 邮件处理软件的核心功能包括邮件收发、管理、过滤和搜索。Thunderbird在这些方面提供了强大的功能,如支持IMAP和...

    thunderbird 邮件备份

    Thunderbird是一款由Mozilla开发的开源电子邮件客户端,它提供了丰富的功能,包括邮件管理、新闻组、聊天和RSS阅读等。在日常使用中,为了防止数据丢失或进行迁移,定期备份Thunderbird的邮件设置和数据是非常重要的...

    FlappyBird素材包

    总的来说,这个Flappy Bird素材包为开发者提供了一个基础的游戏框架,通过深入学习和实践,可以进一步理解游戏开发的各个环节,从图像设计、动画处理到编程实现,对于提升Android应用开发技能大有裨益。同时,也可以...

    Flappy Bird 源代码 贴图 以及 音效

    总结起来,学习Flappy Bird的源代码、贴图和音效,不仅能让我们深入了解游戏开发的全貌,还能锻炼我们的编程思维、艺术感知和音频处理能力。对于长安大学的学生而言,这是一个极好的实践平台,而对于Unity爱好者,这...

    flappybird图像音频资源包

    他们会介绍如何设置精灵(Sprite)和动画,如何处理碰撞检测,以及如何播放和控制音频。通过学习这些内容,初学者可以了解游戏开发的基本流程,并逐步掌握游戏开发的核心技能。 总的来说,"flappybird图像音频资源...

    flappy_bird 素材资源

    《Flappy Bird游戏素材资源详解》 在游戏开发领域,Flappy Bird是一款极其经典且具有极高人气的小游戏,它的简洁设计和挑战性吸引了无数玩家。本资源包是针对这款热门游戏——Flappy Bird的素材资源集合,包含了...

    FlappyBird 素材

    6. **得分系统**:实现一个计分系统,记录并显示玩家的成绩。 7. **碰撞检测**:编写算法来检测小鸟与管道的碰撞,以判断游戏是否结束。 通过以上分析,我们可以看到,Flappy Bird虽然看起来简单,但背后涉及的...

    flappyBird素材包

    《Flappy Bird游戏素材解析与应用》 Flappy Bird是一款风靡全球的休闲游戏,以其简单易上手的操作和极具挑战性的玩法深受玩家喜爱。在本文中,我们将深入探讨这款游戏中的一些关键素材,并通过提供的压缩包文件,...

    flappybird全套图片+音效

    在游戏开发过程中,图像和音效的选择和处理需要考虑以下几点: 1. **适应性**:图像和音效应适应游戏的主题和风格,保持一致性,使整体视觉和听觉体验和谐。 2. **优化**:为了保证游戏性能,图像和音效文件需进行...

    FlappyBird源码-java

    虽然Flappy Bird的源码可能不包含复杂的进度保存功能,但简单的高分记录可以通过序列化和反序列化技术实现,如使用java.io.Serializable接口。 通过学习Flappy Bird的Java源码,开发者不仅可以掌握基础的游戏开发...

    Flappy bird资源.zip

    使用Rigidbody2D组件处理物理行为;设置Trigger或Collider来检测小鸟与管道的碰撞;以及实现分数系统和游戏结束条件。 在熟悉了Flappy Bird的开发后,我们可以将其技术点应用到更复杂的游戏场景中,比如"小鸟大战...

    flappy bird源代码

    总的来说,通过C++实现Flappy Bird源代码,需要掌握游戏开发的基本原理,包括游戏循环、碰撞检测、物理模拟、动画渲染、计时器、音效处理以及状态管理等多个方面。这不仅是对编程技能的锻炼,也是对游戏设计思维的...

    FlappyBird_C++_bird_

    总的来说,通过复刻《Flappy Bird》这个游戏,我们可以深入理解C++的基本语法,学习如何使用图形库进行游戏开发,掌握事件处理和物理模拟,以及提高面向对象编程的技能。这是一个全面且有趣的项目,对于任何想要提升...

    免费图片处理工具箱Hummingbird

    Hummingbird使用智能压缩技术来减少文件的大小,支持:jpg、png、webp、svg、gif、gif、css、js、html、mp4、mov,...Hummingbird可以处理字体文件,其前身是[color=var(--fgColor-accent, var(--color-accent-fg))]P

    Thunderbird的一套主题

    开发者需要掌握DOM操作、事件处理、异步编程(如Promise和async/await)以及可能的库或框架(如jQuery)。 3. **Thunderbird扩展机制**:Thunderbird允许通过扩展(Extension)和主题(Theme)来增强其功能和外观。...

    flappybird python版

    《Python版Flappy Bird游戏开发详解》 在编程领域,Python以其简洁明了的语法和丰富的库支持,成为了初学者和专业人士的首选语言之一。Flappy Bird是一款风靡全球的休闲游戏,它简单却极具挑战性。利用Python来实现...

    FlappyBird实训报告.docx

    这部分详细记录了实现各功能的具体步骤和技术要点,如精灵动画的创建、碰撞检测算法的应用、用户输入的处理以及得分系统的实现。 第五章 游戏开发总结 在开发过程中,我们遇到了如性能优化、游戏平衡性调整等挑战,...

Global site tag (gtag.js) - Google Analytics