• RS报表从按月图表追溯到按日报表


    相信很多COGNOS开发人员看到这个标题就会感觉很轻松,追溯无非是COGNOS自带的一个下钻的功能,但是这里却是固定的条件:

    要求1:A报表显示按月的图表B报表显示按日的明细

         2:追溯到B的时候B的开始日期控件和结束日期控件还可以随机选择

      

       设置追溯

       

     在报表Address2中添加提示页面,如下图所示

     

    1处是导入xdate.js库

    <script type="text/javascript" src="/iisroot/ewelljs/xdate.js"></script>

    2处是div的开始

    <div style="display:none">

    3处是文本框提示,参数名为year 接收Address1传过来的年编码

    4处是文本框提示,参数名为month 接收Address1传过来的月编码

    5处是日期提示 参数名为begindate,名称为begindate

    6处是日期提示 参数名为enddate,名称为enddate

    7处是JS处理主体

    <script>
    function setvalueforriqitishi()//该方法完成在提示页面运行时根据传过来的年份和月份对日期提示(开始/结束)赋值
    {
    var form=getFormWarpRequest();//得到form表单
    var year=form._textEditBoxyear.value;
    var month=form._textEditBoxmonth.value;
    var day='1';
    var datestr=year+'/'+month+'/'+day;
    var firstDate = new Date(datestr);
    //以下脚本需要xdate.js脚本支持
    firstDate.setDate(1); //第一天
    var endDate = new Date(firstDate);
    endDate.setMonth(firstDate.getMonth()+1);
    endDate.setDate(0);
    //alert("第一天:"+new XDate(firstDate).toString('yyyy-MM-dd') +" 最后一天:"+new XDate(endDate).toString('yyyy-MM-dd'));
    pickerControlbegindate.setValue(new XDate(firstDate).toString('yyyy-MM-dd'));
    //下面三判断如果是当前月,结束日期提示为当前天
    var myDate = new Date();
    var nowmonth=myDate.getMonth(); //获取当前月份(2位)
    if(month!=nowmonth+1)
    {
    pickerControlenddate.setValue(new XDate(endDate).toString('yyyy-MM-dd'));
    }
    
    promptButtonFinish();
    
    }
    
    
    function init()
    {
    setvalueforriqitishi();
    
    }
    </script>
    
    <body onload="init()">
    </body>
    
    </div>

    address2的页面1

    8和9处的参数名一定要和5和6处的参数名保持一致,这样才可以赋值

    过滤器

    cast([门诊挂号].[日期].[年].[Date_SK].[Date_SK],date)
    between
    ?begindate?
    and
    ?enddate?

     简单的这么写就好了

     原理:虽然Address2处的必须参数为begindate和enddate,Address1处穿过来的是月份,但是我们可以利用传过来的年份和月份加上js脚本对Address2中的日期提示控件进行  赋值,如果是追溯过来的就查找传过来的整月的数据

     反之,如果是用户手工在address中选择的随机日期则按照随机日期进行查询

     此处的难点是:Address2追溯完成后还需要按照日进行随机查询,而不是按月,导致了按月过滤和按日过滤的冲突,而上面的方法就解决了这个问题

    引入XDate.JS 这个小插件,不知道的百度谷歌吧

    代码如下:

    var firstDate = new Date();

    firstDate.setDate(1); //第一天

    var endDate = new Date(firstDate);

    endDate.setMonth(firstDate.getMonth()+1);

    endDate.setDate(0);

    alert("第一天:"+new XDate(firstDate).toString('yyyy-MM-dd')+" 最后一天:"+new XDate(endDate).toString('yyyy-MM-dd'));

        

       

  • 相关阅读:
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:Cookies、会话和身份验证
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:表单处理
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:使用PHP访问MySQL
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:掌握MySQL
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:MySQL入门
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:实用PHP技术
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:PHP数组
    吴裕雄--天生自然PHP-MySQL-JavaScript学习笔记:PHP函数与对象
    (008)spring之BeanPostProcessor的执行时机及作用
    (007)spring容器获取ApplicationContext
  • 原文地址:https://www.cnblogs.com/wxjnew/p/4569948.html
Copyright © 2020-2023  润新知