在制作报表的过程中,子表是不可缺少的。今天就研究了一下制作子表的几种方式

一、连接数据库创建子表

以MySQL为例:

我的数据源数据库中的表

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

1)iReport 创建父表

这个就是创建一个新的表格,只是记得数据源要选择mySQL ,其它的数据库数据源也一样的。

2)创建好之后,我们来创建子表,在组件面板找到拖动到父表其中的随意一个地方。我是放到detail里面的

它会产生一个向导

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

一路next下去,仅仅是在最后一项选择use empty datasource,只是选其它的也行,待会我们还要改动

3)说一下原理:这样的方式就是利用每张报表都有的Parameters属性。在iReport4.6中。点击子报表在右側属性栏的最以下有两个属性

一个是Parameters属性,他能够用来向子表传递数据接下来我会说到。第二个是Return Values非常明显这个能够用来将子表的数据返回,这个有时间再说。

以下子表属性进行设置:

有两个属性须要注意。一个是Subreport Expression用来指出子表的路径。这个新建之后一边不须要改动

另外一个是connect type。这个要选择Use a connectionexpress 创建子表时候选择默认值。就是父连接,这个如今不是重点,只是在之后的方式中。这个是非常实用的

以下是重点:

设置点击Parameters打开这样一个窗体,点击add之后

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

这就是你自己定义Parameters的地方。名字能够随便取,我的是例如以下设置:名字是id我要传递给子表的是数据库的ID字段,到此。我们对于主表这边的设置结束

4)以下设置子表这里有一个关键点,就是在子表左边栏Parameters属性这边要新建一个Parameters,右键-》新建名字要和上面我们创建的一样而字段的类型要和从主表传递过来的字段一样:我定义的是id同一时候在我的数据库中定义的ID字段是String类型的。所以是以下设置注意。Default Value Expection一定要设置为“”字符,不然会报错,折腾了我好几个小时

这个设置好之后打开数据连接窗体最左边的小button,打开后使用select语句只是要使用我们自己定义的字段,例如以下图,

你会发现出现了一些属性字段选择加入,就OK啦

我的字段和子表设置

以下是预览结果

OK。创建子表的第一种方式就是这样,假设有须要留邮箱。我把源代码发过去。希望能共同学习

回家了,明天继续写

iReport+jasperreport创建子表的几种方式(1)的更多相关文章

  1. hibernate动态创建数据库表名几种方式

    数据库中数据量很大, 但又不可以删除时同时又要优化程序检索数据时间. 答:方式有很多比如 创建数据库表分区,创建索引, 存储过程等; 我这里采用动态创建数据库表的方式. 完全可以在不创建表分区情况下实 ...

  2. django基础之day09,多对多创建数据表的三种方式

    多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...

  3. T-SQL 循环表的一种方式

    原文来自:https://www.lesg.cn/netdaima/sqlservert-sql/2016-463.html SsqlServer 中循环表有几种方式 1.临时表 2.游标 3-. 下 ...

  4. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  5. Java反射机制(创建Class对象的三种方式)

    1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称:   2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...

  6. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  7. Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...

  8. java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  9. HTML创建文本框的3种方式

    我的第一个随笔,记录主要用来整理学习的知识点 1.input 创建单行文本框 <input type="text" size="10" maxlength ...

随机推荐

  1. Vue实现增删改查功能

    简单的表单CURD功能demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  2. pat 团体天梯赛 L3-010. 是否完全二叉搜索树

    L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...

  3. [CODEVS1051]接龙游戏

    题目描述 给出了N个单词,已经按长度排好了序.如果某单词i是某单词j的前缀,i->j算一次接龙(两个相同的单词不能算接龙). 你的任务是:对于输入的单词,找出最长的龙. 输入描述 Input D ...

  4. 显示3行,还要省略号(这个属性比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器)

    div{ overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp:; -webkit- ...

  5. js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算

    原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...

  6. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---4

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...

  7. js 验证数字的正则表达式集

    <script type="text/javascript">     function validate(){       var reg = new RegExp( ...

  8. hdu 1395(欧拉函数)

    2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. Python Challenge 第九关

    第九关只有一幅图,上面有一些黑点.网页名字叫:connect the dots.可能是要把这些点连起来. 查看源代码,果然有两个整数集合 first 和 second.并且有个提示:first+sec ...

  10. Google的新一代一致性哈希算法

    先看到了一篇中文文章:谷歌退出有界负载的一致性哈希算法 然后找到了它对应的英文原文 以及它的英文paper,24页 又找到一篇博客,发现已经有人将它在haproxy上实现了,haproxy1.7.5上 ...