`
yadsun
  • 浏览: 181367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Eclipse Birt使用动态sql创建data set

阅读更多
    Eclipse Birt可以使用sql query来创建数据集,通过在报表中设置参数(Parameter)来传递客户端的用户输入,同时可以设置data set参数并且与报表参数关联(这两个参数是不同的),这样可以将客户端的用户输入传递给data set的参数供sql query的where语句使用,这是通常的创建sql语句的做法,但是种方法只适合固定的sql语句,对于动态的sql就不适用了。
如有这样一条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并与报表参数关联,用户查看报表时必须要输入姓和性别作为查询条件,如果不输则对应的参数值就是null,假如查姓李的人,性别不输,则sql语句就变成这样select ... from ... where user.second_name = '李' and user.sex = null 显然这样的sql是查不出结果的,哪有sex是null的人呢?对于这种情况应该是如果用户某一个参数不输则不将它做为查询条件,上面的sql应该变成select ... from ... where user.second_name = '李'就合理了,把所有姓李的人不分男女都查出来,这就需要使用动态sql语句了,方法有两种:
一、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;


    这两种方法的区别在于:第一种方法是在报表run的时候创建data set,因此在data set编辑器里是没有办法像通常那样预览的 而第二种方法是写在data set的beforeOpen中的,所以在打开data set之前会创建data set因此可以像通常那样预览数据集结果等等
      第一种方法中用param["sex"].value获得Sex参数值,而第二种方法需要利用reportContext来获取Sex参数的值
      另外需要注意的是在拼凑sql时要细心,例如如果参数是String类型时前后一定要加上一对''(具体的取决于所使用的数据库,笔者使用的是oracle)
3
0
分享到:
评论
1 楼 melin 2010-09-09  
谢谢你提供的资料,但这样无法使用绑定变量了。

相关推荐

    eclipse报表插件BIRT

    - **Data Set**:数据集是从数据源中提取数据的逻辑单元,可以是SQL查询或者更复杂的数据操作。 - **Scripting**:通过JavaScript增强报表功能,例如计算字段、控制流程等。 - **Parameters**:用户输入的值,可用来...

    BIRT使用经验谈。birt的初步使用方法

    接着,创建数据集(“New Data Set”),编写SQL查询或者使用已有的数据源查询来获取所需的数据。 **报表元素:** BIRT提供了丰富的报表元素,包括表格、图表、文本、图像等。在设计视图中,可以通过工具栏拖拽这些...

    Birt研究报告(初学者使用指南)

    4. **创建数据集**:在Data Explorer中,新建Data Set,选择数据源,编写SQL查询,预览结果后点击OK完成。数据集将在Data Explorer中显示。 5. **设计报表**: - 添加Label:从Palette视图拖拽Label组件至报表设计...

    BIRT中文使用说明

    **BIRT中文使用说明** BIRT(Business Intelligence and Reporting Tools)是开源的报表系统,它为开发者提供了一套强大的报告生成工具,可以嵌入到Java应用程序、Web应用中,尤其在Eclipse环境中集成良好。本指南...

    Birt 报表工具使用说明

    创建新的报表是使用BIRT的基础步骤之一。可以通过以下步骤进行操作: 1. **创建报表**:在Eclipse中打开“File”菜单,选择“New”->“Report Design”,输入报表名称后,选择报表类型。可以选择使用BIRT系统自带的...

    birt最新使用详细文档

    BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,由Eclipse基金会维护。本教程将详细介绍如何使用BIRT设计并创建一个简单的报表。 首先,我们需要新建一个报表工程。在BIRT报表设计器中,...

    WEB报表BIRT使用手册

    确保正确设置数据源后,接下来需要创建数据集(Data Set),在此处编写SQL查询以获取所需的数据。 BIRT支持多种数据集类型,包括基于SQL查询的数据集和基于Java API的数据集。对于使用Hibernate ORM框架的应用,...

    Birt一步步开发教程

    在“Data Explorer”中,右键单击“Data Sets”并选择“New Data Set”。选择数据源,编写SQL查询或使用Wizard来生成查询,添加需要显示的字段。 #### 2.3.2 创建表 同样,在设计区域拖放“Table”元素,关联数据...

    Integrating and Extending BIRT 3rd Edition (Eclipse Series)

    书中详细讲解了如何利用BIRT的扩展点(Extension Point),如Script Task、Data Set、Data Source等,来实现更复杂的数据处理逻辑或报表样式定制。例如,可以通过自定义脚本来实现复杂的条件格式化、动态数据过滤等...

    Birt入门使用说明及详细资料

    ### BIRT入门使用说明及详细资料 #### 一、下载相关的软件 为了开始使用BIRT进行报表设计,首先需要下载并安装相应的软件。BIRT有两种主要的组件:**开发环境**和**运行环境**。 1. **开发环境**: 用于创建、编辑...

    MyEclipse8.6整合BIRT报表开发

    6. **数据集 (Data Set)**: 数据集是数据源的具体查询或数据提取,可以理解为从数据库中选择的特定表或视图。用户可以编写SQL语句来定义数据集,也可以选择已有表的列。 7. **报表编辑器**: BIRT报表编辑器提供了一...

    Birt一步步开发教程.doc

    - **新建数据集**:在数据源下,右键选择"New Data Set"创建一个新的数据集,这可以基于SQL查询或预定义的数据源来获取数据。 - **创立表**:在设计视图中,从工具栏选择"Chart"拖放到设计区,然后配置图表类型、...

    birt报表开发文档

    - **报表由四部分组成**:模板(Template)、数据源(Data Source)、数据集(Data Set)和报表元素(Report Elements)。 2. **BIRT报表开发实战** - **创建报表工程**:在Eclipse环境中安装BIRT插件后,可以...

    birt报表入门文档

    在Eclipse中创建一个新的项目,选择BIRT类别下的“BIRT Report Project”。这个项目将包含你的报表模板文件和其他相关资源。 四、新建数据源 在报表项目中,创建一个新的数据源。BIRT支持多种数据源类型,包括JDBC...

Global site tag (gtag.js) - Google Analytics