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)
Replace SQL text with Parameter
maximoadmin
<p>Hi All,</p><p> </p><p>I have an SQL query like below in one of the sub dataset</p><p> </p><p>SELECT pmsequence.pmnum, pmsequence.jpnum, PMSEQUENCE.INTERVAL, jobplan.description, jobplan.pluscrevnum, jobplan.orgid jorgid, jobplan.siteid jsiteid, jobplan.status,
jobplan.jobplanid,pmsequence.orgid, pmsequence.siteid
FROM MAXIMO.pmsequence, MAXIMO.jobplan
WHERE pmsequence.jpnum = jobplan.jpnum
and pmsequence.siteid=jobplan.siteid
AND UPPER(jobplan2.status) = NVL(UPPER(<strong>:prmjpstatus</strong>), UPPER(jobplan2.status))
</p><p> </p><p>I created parameter prmjpstatus . What is the process to replace <strong>:prmjpstatus</strong> with parameter value at run time...</p><p> </p><p>Any help...</p><p> </p><p> </p><p>Thanks.</p>
Find more posts tagged with
Comments
griniland
<p>You need to script Data Set event "beforeOpen", there You can get your query text</p><p> </p><p>var queryText=this.queryText</p><p> </p><p>and replace it with anything You want.</p><p> </p><p>this.queryText= newQueryText</p><p> </p><p>Another way is to use binding parametres, I guess.</p>
maximoadmin
<p>Hi</p><p>Here is my test example I am getting errors in beforeOpen method.</p><p> </p><p>[color=#ff0000;]SQL query in my open method:[/color]</p><p>maximoDataSet = MXReportDataSetProvider.create(<strong class='bbc'>this</strong>.getDataSource().getName(), <strong class='bbc'>this</strong>.getName());</p><p>maximoDataSet.open();</p><p> </p><p><strong class='bbc'>var</strong> sqlText = <strong class='bbc'>new</strong> String();</p><p> </p><p><strong class='bbc'>var</strong> siteid=params["siteid"];</p><p> </p><p>// Add query to sqlText variable.</p><p>sqlText = "select assetnum,location,status,siteid,failurecode"</p><p>+ " from asset "</p><p>+ "where"</p><p>+ " asset.siteid= ':site' "</p><p> </p><p>+ "order by asset.assetnum "</p><p>;</p><p> </p><p>maximoDataSet.setQuery(sqlText);</p><p> </p><p> </p><p>[color=#ff0000;]<strong>beforeOpen method:</strong>[/color]</p><p> </p><p> </p><p><strong class='bbc'>var</strong> queryText=<strong class='bbc'>this</strong>.queryText</p><p><strong class='bbc'>this</strong>.queryText = <strong class='bbc'>this</strong>.queryText.replaceAll(":site", params["siteid"]);</p><p> </p><p> </p><p> </p><p>Error:</p><p> </p><p> </p><p><span style="font-size:7pt;">[color=#FF0000;][font="verdana, sans-serif;"]The following items have errors: [/color][/font]</span></p><p> </p><p><span class='bbc_underline'><span style="font-size:7pt;">[color=#FF0000;][font="verdana, sans-serif;"]ReportDesign (id = 1): [/color][/font]</span></span></p><p><span style="font-size:7pt;">[color=#FF0000;][font="verdana, sans-serif;"]+ There are errors evaluating script "<br />
<br />
var queryText=this.queryText<br />
this.queryText = this.queryText.replaceAll(":site", params["siteid"]);<br />
<br />
":<br />
Fail to execute script in function __bm_beforeOpen(). Source:<br />
<br />
" + <br />
<br />
var queryText=this.queryText<br />
this.queryText = this.queryText.replaceAll(":site", params["siteid"]);<br />
<br />
+ "<br />
<br />
A BIRT exception occurred. See next exception for more information.<br />
Error evaluating Javascript expression. Script engine error: TypeError: Cannot call method "replaceAll" of null (/report/data-sets/script-data-set[
@id="
;5"]/method[
@name="
;beforeOpen"]#4)<br />
Script source: /report/data-sets/script-data-set[
@id="
;5"]/method[
@name="
;beforeOpen"], line: 0, text:<br />
__bm_beforeOpen(). (Element ID:1) [/color][/font]</span></p>
griniland
<p>If you set your SQLText in OPEN event, its obvious, that in BEFORE_OPEN event this property is still null, so You can't call it's methods.</p><p> </p><p>Try to fix your script sequence. Haven't worked with SQL queries, but with XML queries I do what I need in DataSet.event beforeOpen();</p>
wwilliams
<p>So have you created a parameter? Data Explorer, Report Parameters, then create a site parameter?</p><p>Then in you query </p><p>+ " and siteid ='" + params["site"].replace(/[=!,]/,"") + "'"</p><p>or just </p><p>+ " and siteid ='" +params["site"] + "'"</p><p>Even</p><p>BirtStr.toUpper(params["site"])...</p>