パラメータ 'Year_Parameter' を参照する値プロンプトと、値プロンプトと同じパラメータを次のように参照する 1 つの列 (データ項目式) を持つリストがあります。
#prompt('Year_Parameter')#
値プロンプトには、2011、2012、および 2013 といういくつかの静的な選択肢があります。したがって、レポートを実行し、レポート ページが表示される前に表示されるプロンプト ページに 2012 と入力すると、値プロンプトで 2012 が自動的に選択されます。レポート ページが表示されるときの選択肢のリスト。
さらに、デフォルトの選択リストに 2012 を入力すると、プロンプト ページは表示されず、レポートが表示されるときに値プロンプトに対して 2012 が自動的に選択されるようになりました。
ただし、デフォルトの選択リストから 2012 を削除し、データ項目式を次の式のいずれかに変更すると、次のようになります。
#prompt('Year_Parameter', 'token', '2012')#
#prompt('Year_Parameter', 'token', 2012)#
#prompt('Year_Parameter', 'string', 2012)#
#prompt('Year_Parameter', 'string', '2012')#
... 2012 が既定の選択として指定されたときのように、プロンプト ページはポップアップしませんが、値プロンプトに対して値が自動的に選択されることはありません。値プロンプトには、デフォルトのヘッダー テキストが表示されます: The parameter name - Year_Parameter".
プロンプト関数の定義を思い出してください。
プロンプト ( prompt_name 、 datatype 、 defaultText 、 text 、 queryItem 、 Trailing_text )
なぜこれが起こっているのか、さらに重要なのは、データ項目式で指定することにより、値プロンプトのデフォルト選択を選択できるようにする方法の解決策を知っている人はいますか?
それは、prompt() マクロがパラメータ 'Year_Parameter' の値を取得しようとするだけで、それ自体はパラメータに値を入力しないためですか? パラメーターは、何らかの値プロンプト (プロンプト ページ上またはレポート ページに埋め込まれている) によって指定する必要があります。
したがって、プロンプト関数への defaultText 引数は、パラメーター自体を埋めることはありませんが、パラメーターに (有効な) 値がない場合に、この特定のプロンプト関数によって返されますか?
ご意見をお寄せいただきありがとうございます。
編集: パラメータにデフォルト値を動的に割り当てる方法に関するこの説明を見つけました。
http://cognosknowhow.blogspot.no/2013/04/how-to-dynamically-set-up-default-value.html
最終:次の Javascript を使用して値プロンプトを動的に選択し、レポートを更新することになりました。
<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>