2013-11-15 13 views
5

ich einen Wert Prompt haben, der die Parameter verweist auf ‚Year_Parameter‘ und eine Liste mit einer Spalte (ein Datenelement-Ausdruck), die den gleichen Parameter verweist als der Wert prompt auf diese Weise:IBM Cognos Report Studio: Werteingabe Standardauswahl von Aufforderung „Standardtext“ Parameter

#prompt('Year_Parameter')# 

der Wert prompt hat einige statische Auswahl: 2011, 2012 und 2013 Daher wird, wenn ich meinen Bericht ausführen, und geben Sie 2012 in der Eingabeaufforderung Seite, die vor dem Bericht erscheint Seite wird angezeigt, 2012 wurde in der Werteingabeaufforderung automatisch aus der Auswahlliste ausgewählt, wenn die Berichtsseite angezeigt wird.

Außerdem, wenn ich 2012 in der Liste der Standardauswahl setze, wird keine Aufforderung Seite gezeigt, und 2012 auch automatisch für den Wert Prompt wird nun ausgewählt, wenn der Bericht angezeigt wird.

Allerdings, wenn ich 2012 aus der Liste der Standardeinstellung zu entfernen, und meine Daten Kriterium Expression dieser Ausdrücke entweder ändern:

#prompt('Year_Parameter', 'token', '2012')# 
#prompt('Year_Parameter', 'token', 2012)# 
#prompt('Year_Parameter', 'string', 2012)# 
#prompt('Year_Parameter', 'string', '2012')# 

... keine Aufforderung Seite erscheint wie bei 2012 angegeben wurden die Standardauswahl, aber für die Werteingabe wird kein Wert automatisch ausgewählt. Der Wert Prompt zeigt den Standardtext. Der Parametername - Year_Parameter“

die schnelle Funktionsdefinition Denken Sie daran:

prompt (prompt_name, Datentyp, default, text, queryItem, trailing_text)

Wer weiß, warum dies passiert und, was noch wichtiger ist, eine Lösung, wie Sie die Standardauswahl für die Werteingabe auswählen können, indem Sie sie im Datenelementausdruck angeben?

Ist es, weil die prompt() Makro versucht, nur den Wert des Parameters zu holen ‚Year_Parameter‘, sondern in sich selbst den Parameter mit einem Wert nicht füllen? Der Parameter muss durch eine Werteingabe (auf einer Eingabeaufforderungsseite oder eingebettet in eine Berichtsseite) angegeben werden.

Daher wird das defaultText-Argument für die Eingabeaufforderungsfunktion NIE den Parameter selbst füllen, sondern von dieser speziellen Eingabeaufforderungsfunktion zurückgegeben werden, wenn der Parameter keinen (gültigen) Wert hat?

Vielen Dank im Voraus für jede Eingabe!

Edit: Fand diese Erklärung, wie dynamisch einen Standardwert Parameter zuweisen.

http://cognosknowhow.blogspot.no/2013/04/how-to-dynamically-set-up-default-value.html

Final: Ich landete die folgende Javascript verwenden, um dynamisch Auswahlwert prompt und aktualisieren Sie den Bericht:

<script type="text/javascript"> 
// This function updates the report dynamically for the current year 
// The function is wrapped inside a setTimeout call in order to avoid an error caused by too frequent requests 
setTimeout(function updatePrompt() { 
    var oCR = cognos.Report.getReport("_THIS_"); 
    var yearPrompt = oCR.prompt.getControlByName("YearPrompt"); 
    var selectedValue = yearPrompt.getValues()[0]; 

    if (typeof selectedValue === "undefined") { 
     currentYear = new Date().getFullYear(); 
     yearPrompt.setValues([{'use':currentYear}]); 
     // Update report 
     oCR.sendRequest(cognos.Report.Action.FINISH); 
    } 
}, 50); 
</script> 

Antwort

4

Genau, wie Skovly sagt, die prompt Makro kann nicht Fülle den Wert für den Parameter aus. Aus dem angegebenen Link würde ich JavaScipt (erste Option), aber bedenken IBM ändert sich die Syntax von Version zu Version wählen.

(Ich weiß noch nicht, wie man Kommentare zu den Antworten, sonst würde ich es an den vorherigen anhängen, um die Meinung stregthen, dass Sie nicht tun können, was Sie mit Prompt-Makro wollen).