iReport中sub-dataset引用调用main report中的参数

原文地址: http://webprogrammer.tistory.com/2051

在iReport中sub-dataset中无法直接引用主报表中的fields,parameters,variables

并且要使用sub-dataset中的数据,只能在crosstable,table,list,chart组件中使用


现假设main report中的sql为:

SELECT
product_sales.`continent` AS product_sales_continent,
product_sales.`city` AS product_sales_city, 
product_sales.`product` AS product_sales_product,
product_sales.`sales` AS product_sales_sales
FROM
`product_sales` product_sales
ORDER BY
1, 2, 3

右击根元素,添加sub-dataset

假设sub-dataset中的sql为:

SELECT
product_sales.`product` AS product_sales_product,
SUM(product_sales.`sales`) AS product_sales_sales
FROM
`product_sales` product_sales
GROUP BY 1
ORDER BY 1
以上查询语句并不是最终的sql,其中变量需要在设置完毕后添加。

在sub-dataset中添加parameter 所添加参数的类型应与主报表中相应参数的类型相同


并且将自定义的parameter属性中的use as a prompt一项设置为未选中

从组件中添加chart至disigner view中,在弹出的对话框中,选择dataset为之前新建的sub-dataset后按完成

右击pie chart,选择chart data设置


设置如下chart details--->dataset--->Connection/Datasource exp中选择use connection expression 值为$P{REPORT_CONNECTION}         

 (这里是根据数据源的类型不同有所不同)

chart details--->dataset--->parameters--->add 选择之前在sub-dataset中新建的参数,值为主报表中相应字段的值


最后修改sub-dataset中的sql语句,将参数传入sql中,比例中修改后的sql如下:

SELECT
product_sales.`product` AS product_sales_product,
SUM(product_sales.`sales`) AS product_sales_sales
FROM
`product_sales` product_sales
WHERE
product_sales.`continent`=$P{CONTINENT_CHART}
GROUP BY 1
ORDER BY 1

现在就可以在chart中,根据主报表传来的参数进行查询了。





PS:

1.如果只是要将sub-dataset中的数据展现出来,可以用list实现

2.sub-dataset主要还是用于crosstable,chart等组件中

3.如果要将复杂的查询条件简化,用sub-report可以实现相同的功能,并且灵活性更大

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值