Jasper报告:如何使用PHPJasperXML库将params从jrxml传递到php应用程序

时间:2014-04-11 03:11:32

标签: php jasper-reports ireport

我有一个关于将params从jasper report design jrxml传递到php应用程序的问题。 我使用以下查询设计我的报告:

SELECT
student.`STUDENT_ID` AS student_STUDENT_ID,
student.`STUDENT_NAME` AS student_STUDENT_NAME,
student.`MARK` AS student_MARK,
student.`CLASS_ID` AS student_CLASS_ID
FROM
`student` student
WHERE
(CLASS_ID = $P{class_id} or $P{class_id} = '')
AND $P!{myParamSQL}

我的所有参数都是:class_id,student_id和myParamSQL myParamSQL的默认值为:

($P{student_name}==null ? "1=1" : "STUDENT_NAME = '" + $P{student_name} + "'")

我从ireport工具预览此报告,一切似乎都可以。但我不知道如何将这些参数传递给我的php应用程序。 我尝试使用下面的代码,但结果是“找不到数据”

$PHPJasperXML->arrayParameter=array("class_id"=>"'" .'C001'. "'","student_name"=>"'" .'Jonny'."'");

如果我的查询不使用$ P!{}语法,那么我的php应用程序可以运行报告,但我需要使用$ P!{}

这是我所有的PHP代码:

<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
include_once('jasperclass/tcpdf/tcpdf.php');
include_once("jasperclass/PHPJasperXML.inc.php");   
include_once ('setting.php');

$p1 = 'C001';
$p2 = 'Jonny';

$PHPJasperXML = new PHPJasperXML();
//$PHPJasperXML->debugsql=true; 
$PHPJasperXML->arrayParameter=array("class_id"=>"'" .$p1. "'","student_name"=>"'" .$p2."'"); 

$PHPJasperXML->load_xml_file("report1.jrxml");    
$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);
$PHPJasperXML->outpage("I");    //page output method I:standard output  D:Download file  

?>

你可以帮我解决这个问题吗?

提前致谢

3 个答案:

答案 0 :(得分:0)

如何更改iReport上的实际查询,例如:

SELECT student.`STUDENT_ID` AS student_STUDENT_ID,
student.`STUDENT_NAME` AS student_STUDENT_NAME,
student.`MARK` AS student_MARK,
student.`CLASS_ID` AS student_CLASS_ID

FROM `student` student

WHERE (CLASS_ID = $P{class_id} or $P{class_id} = '')
AND STUDENT_NAME LIKE CONCAT('%', $P{student_name}, '%')

使用这种方式,您的查询会更容易。

答案 1 :(得分:0)

你可以这样做。

PHP:

$xml =  simplexml_load_file("kartuTapir.jrxml");
$PHPJasperXML->arrayParameter=array("kd_pasien"=>"'".$id."'",
    "puskesmas"=>$_GET['puskesmas']);

$PHPJasperXML->xml_dismantle($xml);
$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);
$PHPJasperXML->outpage("I"); //page output method I:standard output  D:Download file    F:Save to Local File

JRXML注册参数:

<parameter name="kd_pasien" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="puskesmas" class="java.lang.String">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>

JRXML显示参数:

<textField>
    <reportElement x="10" y="25" width="400" height="11" uuid="d1ad6a10-be7f-4579-81ce-9d4b02a7135e"/>
    <textElement textAlignment="Center">
        <font size="12" isBold="true"/>
    </textElement>
    <textFieldExpression><![CDATA[$P{puskesmas}]]></textFieldExpression>
</textField>

希望它有所帮助。

答案 2 :(得分:-2)

在不同的行中传递参数然后问题可能会得到解决请检查