Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
PUBLIC CLOUD
PRIVATE CLOUD
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Intelligence (Analytics)
Passing parameters to another report by hyperlinking (URI)
msnoeckx
<div><span>Hi,<br><br>
I'm developing Spago reports (.rptdesign) in BIRT and have a problem with passing parameters when hyperlinking to another report.<br>
Could anyone tell me what I am doing wrong here ?<br><br>
I have a master report and a slave report.<br>
On the master there is a hyperlink (URI) with following code:<br><br>
"javascript:parent.execCrossNavigation(this.name, 'Job_followup','AD_JobFU_jobname="+row["job_name"]+"&AD_JobFU_version="+row["version"]+"','','','self');"<br><br>
In the subreport I have a query with 2 values in the where condition that equal "?":<br><br>
select<br>
test.job_name,<br>
test.version::character varying(10)<br>
from test<br>
where test.job_name = ?<br>
and test.version = ?<br><br><br>
For this query 2 report parameters AD_JobFU_jobname & AD_JobFU_version are created, which are both strings and both have a default value.<br>
In the dataset I've linked the parameters to this report parameters.<br><br>
What is going wrong:<br><br>
When I open the master report in SpagoBI I can click the link and it goes to the slave report, but it always takes the default value.<br>
So in some way the parameters aren't passed to the slave report's dataset.<br><br>
Does anyone have an idea ??<br><br>
Thanks,<br><br>
Mike</span></div>
<p></p>
Find more posts tagged with
Comments
rgleason
<p>Are you able to use a "Drill Through" hyperlink type? Doing this will present to you a relative pathed report as well as any parameters contained within the target report. From here the hyperlink will be defined with mapped parameter values from the calling or master report. </p>
<p> </p>
<p>Otherwise a call will need to be made to the target report using a link using JSAPI and relevant parameter variables defined. </p>
<p> </p>
<p>Which method are you using? </p>
msnoeckx
<p>Hi rgleason,</p>
<p> </p>
<p>I've tried the drill through method, but this only works in Birt and not in SpagoBI (after deploying from Birt to SpagoBI).</p>
<p>That's why I try to use the URI hyperlink type with javascript.</p>
<p>By doing this, it links to the slave report, but it doesn't pass the parameters.</p>
rgleason
<p>I've created a testing page where I am passing parameters into a report request. </p>
<p>It will require a JSAPI functions similar to what you'll find in the html here: In this case I've created a simple page to call a specific report, passing parameter values into the submit. </p>
<p> </p>
<p> </p>
<div><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a data-ipb='nomediaparse' href='
http://www.w3.org/TR/html4/strict.dtd'>http://www.w3.org/TR/html4/strict.dtd"></a></div>
;
<div><html></div>
<div><head></div>
<div> <meta http-equiv="content-type" content="text/html;charset=utf-8" /></div>
<div> <script src="<a data-ipb='nomediaparse' href='
http://code.jquery.com/jquery-1.11.0.min.js'>http://code.jquery.com/jquery-1.11.0.min.js"></script></a></div>
;
<div> <script type="text/javascript" lang="JavaScript" src="
http://[your
BIRT Server instance]/jsapi"></script></div>
<div> <script type="text/javascript" lang="JavaScript"></div>
<div> var param;</div>
<div> function init() {</div>
<div> actuate.load("parameter");</div>
<div> actuate.initialize("
http://[your
BIRT Server instance]/", null, null, "", initParamModule);</div>
<div> }</div>
<div> </div>
<div> function initParamModule() {</div>
<div> param = new actuate.Parameter("paramContainer");</div>
<div> }</div>
<div> </div>
<div> </script></div>
<div> <title>Actuate Report</title></div>
<div></head></div>
<div><body></div>
<div> <input type="button" value="Display Report" onclick="javascript: showReport()" /></div>
<div> <hr></div>
<div> </div>
<div> </div>
<div> <div></div>
<div> <div style="width:200px;float:left;display:inline-block;background-color:LightGray;height:700px;"></div>
<div> </div>
<div> <div style="background-color:SpringGreen;"></div>
<div> <a href="#" onclick="window.open('<a data-ipb='nomediaparse' href='
http://www.google.com'>http://www.google.com</a>'
'newwindow', 'width=1200, height=250'); return false;">Google</a> </div>
<div> </div></div>
<div> <div style="background-color:cyan;"></div>
<div> <a href="#" onclick="window.open('<a data-ipb='nomediaparse' href='
http://www.yahoo.com'>http://www.yahoo.com</a>'
'newwindow', 'width=1200, height=250'); return false;">Yahoo</a> </div>
<div> </div></div>
<div> </div>
<div> </div></div>
<div> <div style="margin-left:200px;"></div>
<div> <iframe class="pdfframe frmPDF" style="width:100%; height:700px;"></iframe> </div>
<div> </div></div>
<div> </div>
<div></div> </div>
<div> <div id="paramContainer"></div></div>
<div> <div id="parameterListContainer"></div></div>
<div> </div>
<div> </div>
<div> </div>
<div> <script type="text/javascript"></div>
<div> $(document).ready(function () {</div>
<div> init();</div>
<div> });</div>
<div> showReport = function () {</div>
<div> </div>
<div> param.setReportName("/[Some Report].rptdesign");</div>
<div> param.downloadParameters(setParameters);</div>
<div> }</div>
<div> setParameters = function (pds) {</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var fileName = '[path to report].rptdesign';</div>
<div> var url = "[birt server]//[your BIRT context]/executereport.do?__executableName=" + fileName;</div>
<div> var qryString = "";</div>
<div> for (var i = 0; i < pds.length; i++) {</div>
<div> var paramCounter = i + 1;</div>
<div> switch (pds
.getName()) {</div>
<div> case '[
@Parameter1]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter1] ;</div>
<div> break;</div>
<div> case '[
@Parameter2]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter2] ;</div>
<div> break;</div>
<div> case '[
@Parameter3]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter3] ;</div>
<div> break;</div>
<div> case '[
@Parameter4]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter4] ;</div>
<div> break;</div>
<div> case '[
@Parameter5]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter5] ;</div>
<div> break;</div>
<div> case '[
@Parameter6]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter6] ;</div>
<div> break;</div>
<div> case '[
@Parameter7]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter7] ;</div>
<div> break;</div>
<div> case '[
@Parameter8]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter8] ;</div>
<div> break;</div>
<div> case '[
@Parameter9]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter9] ;</div>
<div> break;</div>
<div> case '[
@Parameter10]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter10] ;</div>
<div> break;</div>
<div> }</div>
<div> </div>
<div> }</div>
<div> url = url + qryString + "&invokeSubmit=true";</div>
<div> $(".frmPDF").attr("src", url);</div>
<div> }</div>
<div> </script></div>
<div></body></div>
<div> </div>
<div></html></div>
msnoeckx
<p>Hi rgleason,</p>
<p> </p>
<p>Thanks for the info.</p>
<p>I have found a much more simple resolution though.</p>
<p>Just as I was doing, but I had the URL in the analytical driver wrong. (Capital letter instead of regular)</p>
<p>So I just used:</p>
<p> </p>
<p>"javascript:parent.execCrossNavigation(this.name, 'Job_followup','AD_JobFU_jobname="+row["job_name"]+"&AD_JobFU_version="+row["version"]+"','','','self');"<br>
</p>
<p> </p>
<p>Thanks,</p>
<p>Mike</p>
<p> </p>
<blockquote class="ipsBlockquote" data-author="rgleason" data-cid="129716" data-time="1406637783">
<div>
<p> </p>
<p>I've created a testing page where I am passing parameters into a report request. </p>
<p>It will require a JSAPI functions similar to what you'll find in the html here: In this case I've created a simple page to call a specific report, passing parameter values into the submit. </p>
<p> </p>
<p> </p>
<div><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "<a data-ipb='nomediaparse' href='
http://www.w3.org/TR/html4/strict.dtd'>http://www.w3.org/TR/html4/strict.dtd"></a></div>
;
<div><html></div>
<div><head></div>
<div> <meta http-equiv="content-type" content="text/html;charset=utf-8" /></div>
<div> <script src="<a data-ipb='nomediaparse' href='
http://code.jquery.com/jquery-1.11.0.min.js'>http://code.jquery.com/jquery-1.11.0.min.js"></script></a></div>
;
<div> <script type="text/javascript" lang="JavaScript" src="
http://[your
BIRT Server instance]/jsapi"></script></div>
<div> <script type="text/javascript" lang="JavaScript"></div>
<div> var param;</div>
<div> function init() {</div>
<div> actuate.load("parameter");</div>
<div> actuate.initialize("
http://[your
BIRT Server instance]/", null, null, "", initParamModule);</div>
<div> }</div>
<div> </div>
<div> function initParamModule() {</div>
<div> param = new actuate.Parameter("paramContainer");</div>
<div> }</div>
<div> </div>
<div> </script></div>
<div> <title>Actuate Report</title></div>
<div></head></div>
<div><body></div>
<div> <input type="button" value="Display Report" onclick="javascript: showReport()" /></div>
<div> <hr></div>
<div> </div>
<div> </div>
<div> <div></div>
<div> <div style="width:200px;float:left;display:inline-block;background-color:LightGray;height:700px;"></div>
<div> </div>
<div> <div style="background-color:SpringGreen;"></div>
<div> <a href="#" onclick="window.open('<a data-ipb='nomediaparse' href='
http://www.google.com'>http://www.google.com</a>'
'newwindow', 'width=1200, height=250'); return false;">Google</a></div>
<div> </div></div>
<div> <div style="background-color:cyan;"></div>
<div> <a href="#" onclick="window.open('<a data-ipb='nomediaparse' href='
http://www.yahoo.com'>http://www.yahoo.com</a>'
'newwindow', 'width=1200, height=250'); return false;">Yahoo</a></div>
<div> </div></div>
<div> </div>
<div> </div></div>
<div> <div style="margin-left:200px;"></div>
<div> <iframe class="pdfframe frmPDF" style="width:100%; height:700px;"></iframe> </div>
<div> </div></div>
<div> </div>
<div></div> </div>
<div> <div id="paramContainer"></div></div>
<div> <div id="parameterListContainer"></div></div>
<div> </div>
<div> </div>
<div> </div>
<div> <script type="text/javascript"></div>
<div> $(document).ready(function () {</div>
<div> init();</div>
<div> });</div>
<div> showReport = function () {</div>
<div> </div>
<div> param.setReportName("/[Some Report].rptdesign");</div>
<div> param.downloadParameters(setParameters);</div>
<div> }</div>
<div> setParameters = function (pds) {</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var [Parameter1] = [value];</div>
<div> var fileName = '[path to report].rptdesign';</div>
<div> var url = "[birt server]//[your BIRT context]/executereport.do?__executableName=" + fileName;</div>
<div> var qryString = "";</div>
<div> for (var i = 0; i < pds.length; i++) {</div>
<div> var paramCounter = i + 1;</div>
<div> switch (pds
.getName()) {</div>
<div> case '[
@Parameter1]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter1] ;</div>
<div> break;</div>
<div> case '[
@Parameter2]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter2] ;</div>
<div> break;</div>
<div> case '[
@Parameter3]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter3] ;</div>
<div> break;</div>
<div> case '[
@Parameter4]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter4] ;</div>
<div> break;</div>
<div> case '[
@Parameter5]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter5] ;</div>
<div> break;</div>
<div> case '[
@Parameter6]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter6] ;</div>
<div> break;</div>
<div> case '[
@Parameter7]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter7] ;</div>
<div> break;</div>
<div> case '[
@Parameter8]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter8] ;</div>
<div> break;</div>
<div> case '[
@Parameter9]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter9] ;</div>
<div> break;</div>
<div> case '[
@Parameter10]
':<!--report parametername--</div>
<div> qryString = qryString + "&" + pds
.getName() + '=' + [Parameter10] ;</div>
<div> break;</div>
<div> }</div>
<div> </div>
<div> }</div>
<div> url = url + qryString + "&invokeSubmit=true";</div>
<div> $(".frmPDF").attr("src", url);</div>
<div> }</div>
<div> </script></div>
<div></body></div>
<div> </div>
<div></html></div>
<p> </p>
</div>
</blockquote>