【问题标题】:How to set most recently used parameter value as Default in value prompt or text prompt in Cognos Bi如何在 Cognos Bi 的值提示或文本提示中将最近使用的参数值设置为默认值
【发布时间】:2018-04-04 01:16:11
【问题描述】:

我使用的是 Cognos Bi 10.2.2 版本。

我已经为带有值提示的参数创建了一个提示页面。我将参数用作“Term_Code”,其中包含诸如201410,201420,201510... 之类的值,我将在运行时第一次选择参数值“201420”报告。当我以后再次运行我的报告时,我必须将默认值设为 201420,这是最近使用的参数值。有人知道吗,

如何获取最近使用的参数值作为值提示中的默认值。请帮帮我。

提前致谢。

【问题讨论】:

    标签: sql plsql cognos cognos-10 cognos-bi


    【解决方案1】:

    您可以创建一个 cookie 以将其值设置为用户上次选择的值。我这样做的方法是将一个 HTML 项拖到提示之后,然后在 HTML 元素内,您可以放置​​ JavaScript 来负责创建 cookie 并设置它的值。

    这是我使用的 JavaScript:

    <script>
    
    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function subtractDay ()
    {
    var dtToday = new Date();
    var dtYesterday = new Date( dtToday - 86400000 ); // 86400000 = 24 hours * 60 (minutes per hour) * 60 (seconds per minute) * 1000 (milliseconds per second)
    var strYesterday = [dtYesterday.getUTCFullYear(), dtYesterday.getMonth()+1, dtYesterday.getDate()].join("-");
    return strYesterday;
    }
    
    
    
    var x = readCookie('MyCookie');
    while (x != 'Value'){
        pickerControlpDatePicked.setValue(subtractDay() );
        createCookie('MyCookie','Value',0);
        x = readCookie('MyCookie');
    
    }
    </script> 
    

    函数pickerControlpDatePicked 获取所选日期(这是我的用例)。我认为String应该有类似的功能

    【讨论】:

    • 这仅在他想要存储和检索每个人最后选择的值时才有效。从描述中不清楚这是否是他想要的。如果他想要一个通用的“最后选择”值,这是行不通的。
    【解决方案2】:

    这只是一个可能的解决方案的建议。

    在 Framework Manager 中,您可以将查询主题链接到存储过程。每次执行报表时,参数 Team_Code 将被传递给链接到存储过程的查询,存储过程会将其值保存在数据库表中。

    下次执行报表时,提示页面会查询保存的参数表中最后保存的参数,使用JavaScript Prompt API会将此值设置为提示页面中提示控件的默认值.

    我希望这会有所帮助,祝你好运!

    【讨论】:

      【解决方案3】:

      Cognos 并非旨在存储有关提示选择的信息,报告视图除外。但是,这对您没有帮助,因为报表视图提示值不是动态的。您设置一个固定值,它会保留该值,直到您手动更改它。

      我要做的是设置一个小型 Web 服务。这将是一个网页,其目的是通过 Web URL 接收请求并返回信息或执行某些操作。可以创建一个页面来:

      1. 接收新值并将其存储在数据库中,甚至存储在 cookie 中
      2. 从数据库/cookie 中检索一个值并将其返回给请求者

      Cognos 提示页面将包含在第一次生成提示页面时触发的 JavaScript,以通过 Web 服务检索存储的值并将提示值设置为先前的选择。当用户选择一个新值时也会触发 JavaScript,该值会将选择发送到 Web 服务进行存储。

      【讨论】:

        猜你喜欢
        • 2013-11-28
        • 1970-01-01
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 2017-02-14
        • 1970-01-01
        相关资源
        最近更新 更多