我有一个关于将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
?>
你可以帮我解决这个问题吗?
提前致谢
答案 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)
在不同的行中传递参数然后问题可能会得到解决请检查