Danielbryanuk
Technical User
Hi all
Using report studio 8.3
I have a prompt page with many prompts, many of which are controlled using hmtl item. Simply put the html ensures one of 3 prompts must be completed before "finish". Thus after selecting an item in prompt 1, if the user selects an item from prompt 2, then prompt 1 is reset to blank. As follows:
<script language="javascript">
//initialisierungsblock
function setDefault(field)
{
var element = "_oLstChoices"+field;
document.forms["formWarpRequest"].elements[element].selectedIndex = 1;
}
function setListener(src, target )
{
var func = function() {
setDefault(target);
if (document.forms["formWarpRequest"].elements["_oLstChoices"+src].selectedIndex > 1){
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = false;
}else{
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = true;
}
}
document.getElementById("_oLstChoices"+src).attachEvent('onchange',func);
}
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = true;
setDefault("GLOBAL");
setListener("GLOBAL","GMT");
setListener("GLOBAL","SUBGMT");
setListener("GLOBAL","SUBMARKET");
setListener("GLOBAL","LOCATIONGROUP");
setListener("GLOBAL","TEAM");
setListener("GLOBAL","CRM1");
setListener("GLOBAL","CRM2");
setListener("GLOBAL","CRM3");
setDefault("GMT");
setListener("GMT","GLOBAL");
setListener("GMT","SUBMARKET");
setListener("GMT","SUBGMT");
setListener("GMT","LOCATIONGROUP");
setListener("GMT","TEAM");
setListener("GMT","CRM1");
setListener("GMT","CRM2");
setListener("GMT","CRM3");
setDefault("SUBGMT");
setListener("SUBGMT","GLOBAL");
setListener("SUBGMT","SUBMARKET");
setListener("SUBGMT","GMT");
setListener("SUBGMT","LOCATIONGROUP");
setListener("SUBGMT","TEAM");
setListener("SUBGMT","CRM1");
setListener("SUBGMT","CRM2");
setListener("SUBGMT","CRM3");
setDefault("SUBMARKET");
setListener("SUBMARKET","GLOBAL");
setListener("SUBMARKET","GMT");
setListener("SUBMARKET","SUBGMT");
setListener("SUBMARKET","LOCATIONGROUP");
setListener("SUBMARKET","TEAM");
setListener("SUBMARKET","CRM1");
setListener("SUBMARKET","CRM2");
setListener("SUBMARKET","CRM3");
setDefault("LOCATIONGROUP");
setListener("LOCATIONGROUP","GLOBAL");
setListener("LOCATIONGROUP","GMT");
setListener("LOCATIONGROUP","SUBGMT");
setListener("LOCATIONGROUP","SUBMARKET");
setListener("LOCATIONGROUP","TEAM");
setListener("LOCATIONGROUP","CRM1");
setListener("LOCATIONGROUP","CRM2");
setListener("LOCATIONGROUP","CRM3");
setDefault("TEAM");
setListener("TEAM","GLOBAL");
setListener("TEAM","GMT");
setListener("TEAM","SUBGMT");
setListener("TEAM","SUBMARKET");
setListener("TEAM","LOCATIONGROUP");
setListener("TEAM","CRM1");
setListener("TEAM","CRM2");
setListener("TEAM","CRM3");
setDefault("CRM1");
setListener("CRM1","GLOBAL");
setListener("CRM1","GMT");
setListener("CRM1","SUBGMT");
setListener("CRM1","SUBMARKET");
setListener("CRM1","LOCATIONGROUP");
setListener("CRM1","TEAM");
setListener("CRM1","CRM2");
setListener("CRM1","CRM3");
setDefault("CRM2");
setListener("CRM2","GLOBAL");
setListener("CRM2","GMT");
setListener("CRM2","SUBGMT");
setListener("CRM2","SUBMARKET");
setListener("CRM2","LOCATIONGROUP");
setListener("CRM2","TEAM");
setListener("CRM2","CRM1");
setListener("CRM2","CRM3");
setDefault("CRM3");
setListener("CRM3","GLOBAL");
setListener("CRM3","GMT");
setListener("CRM3","SUBGMT");
setListener("CRM3","SUBMARKET");
setListener("CRM3","LOCATIONGROUP");
setListener("CRM3","TEAM");
setListener("CRM3","CRM1");
setListener("CRM3","CRM2");
setDefault("TYPE");
setDefault("MONTH");
//document.getElementById("_oLstChoicesGMT").attachEvent('onclick',setGlobal);
function setGlobal()
{
setDefault("GLOBAL");
}
</script>
My issue is that I have a calculated data item that references these prompts - using "case when" method I want to select a corresponding data item based upon which prompt has been completed. I have tried using:
"CASE
WHEN ?pCRM1? is null and ?pCRM2? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[3.CRM]
WHEN ?pCRM1? is null and ?pCRM3? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[2.CRM]
WHEN ?pCRM2? is null and ?pCRM3? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[1.CRM]
ELSE NULL
END"
The problem is that using "null" means the query requests an input for the two remaining incomplete parameters.
Can anyone suggest an operator to use in the query, or a different construct? I would like to maintain the html control if possible!
Thanks
Dan
Using report studio 8.3
I have a prompt page with many prompts, many of which are controlled using hmtl item. Simply put the html ensures one of 3 prompts must be completed before "finish". Thus after selecting an item in prompt 1, if the user selects an item from prompt 2, then prompt 1 is reset to blank. As follows:
<script language="javascript">
//initialisierungsblock
function setDefault(field)
{
var element = "_oLstChoices"+field;
document.forms["formWarpRequest"].elements[element].selectedIndex = 1;
}
function setListener(src, target )
{
var func = function() {
setDefault(target);
if (document.forms["formWarpRequest"].elements["_oLstChoices"+src].selectedIndex > 1){
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = false;
}else{
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = true;
}
}
document.getElementById("_oLstChoices"+src).attachEvent('onchange',func);
}
document.forms["formWarpRequest"].elements["_oLstChoicesMONTH"].disabled = true;
setDefault("GLOBAL");
setListener("GLOBAL","GMT");
setListener("GLOBAL","SUBGMT");
setListener("GLOBAL","SUBMARKET");
setListener("GLOBAL","LOCATIONGROUP");
setListener("GLOBAL","TEAM");
setListener("GLOBAL","CRM1");
setListener("GLOBAL","CRM2");
setListener("GLOBAL","CRM3");
setDefault("GMT");
setListener("GMT","GLOBAL");
setListener("GMT","SUBMARKET");
setListener("GMT","SUBGMT");
setListener("GMT","LOCATIONGROUP");
setListener("GMT","TEAM");
setListener("GMT","CRM1");
setListener("GMT","CRM2");
setListener("GMT","CRM3");
setDefault("SUBGMT");
setListener("SUBGMT","GLOBAL");
setListener("SUBGMT","SUBMARKET");
setListener("SUBGMT","GMT");
setListener("SUBGMT","LOCATIONGROUP");
setListener("SUBGMT","TEAM");
setListener("SUBGMT","CRM1");
setListener("SUBGMT","CRM2");
setListener("SUBGMT","CRM3");
setDefault("SUBMARKET");
setListener("SUBMARKET","GLOBAL");
setListener("SUBMARKET","GMT");
setListener("SUBMARKET","SUBGMT");
setListener("SUBMARKET","LOCATIONGROUP");
setListener("SUBMARKET","TEAM");
setListener("SUBMARKET","CRM1");
setListener("SUBMARKET","CRM2");
setListener("SUBMARKET","CRM3");
setDefault("LOCATIONGROUP");
setListener("LOCATIONGROUP","GLOBAL");
setListener("LOCATIONGROUP","GMT");
setListener("LOCATIONGROUP","SUBGMT");
setListener("LOCATIONGROUP","SUBMARKET");
setListener("LOCATIONGROUP","TEAM");
setListener("LOCATIONGROUP","CRM1");
setListener("LOCATIONGROUP","CRM2");
setListener("LOCATIONGROUP","CRM3");
setDefault("TEAM");
setListener("TEAM","GLOBAL");
setListener("TEAM","GMT");
setListener("TEAM","SUBGMT");
setListener("TEAM","SUBMARKET");
setListener("TEAM","LOCATIONGROUP");
setListener("TEAM","CRM1");
setListener("TEAM","CRM2");
setListener("TEAM","CRM3");
setDefault("CRM1");
setListener("CRM1","GLOBAL");
setListener("CRM1","GMT");
setListener("CRM1","SUBGMT");
setListener("CRM1","SUBMARKET");
setListener("CRM1","LOCATIONGROUP");
setListener("CRM1","TEAM");
setListener("CRM1","CRM2");
setListener("CRM1","CRM3");
setDefault("CRM2");
setListener("CRM2","GLOBAL");
setListener("CRM2","GMT");
setListener("CRM2","SUBGMT");
setListener("CRM2","SUBMARKET");
setListener("CRM2","LOCATIONGROUP");
setListener("CRM2","TEAM");
setListener("CRM2","CRM1");
setListener("CRM2","CRM3");
setDefault("CRM3");
setListener("CRM3","GLOBAL");
setListener("CRM3","GMT");
setListener("CRM3","SUBGMT");
setListener("CRM3","SUBMARKET");
setListener("CRM3","LOCATIONGROUP");
setListener("CRM3","TEAM");
setListener("CRM3","CRM1");
setListener("CRM3","CRM2");
setDefault("TYPE");
setDefault("MONTH");
//document.getElementById("_oLstChoicesGMT").attachEvent('onclick',setGlobal);
function setGlobal()
{
setDefault("GLOBAL");
}
</script>
My issue is that I have a calculated data item that references these prompts - using "case when" method I want to select a corresponding data item based upon which prompt has been completed. I have tried using:
"CASE
WHEN ?pCRM1? is null and ?pCRM2? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[3.CRM]
WHEN ?pCRM1? is null and ?pCRM3? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[2.CRM]
WHEN ?pCRM2? is null and ?pCRM3? is null
THEN [GMT Product Overview by Asset Class].[Organisation 1.CRM].[1.CRM]
ELSE NULL
END"
The problem is that using "null" means the query requests an input for the two remaining incomplete parameters.
Can anyone suggest an operator to use in the query, or a different construct? I would like to maintain the html control if possible!
Thanks
Dan