可以取消日期提示 的默认值吗?

0
如图:每次点完查询后,再次查询的话, 打印日期起期和止期 都出默认显示当前日期 。。客户要求去掉。可以做吗?谢谢大家啦!
QQ截图20151015182217.png
已邀请:
1

左右 - 数据服务专家 专注于IBM家族高级分析领域钻研 数据可视化践行者 2015-10-15 回答

cognos默认不允许直接选择空(null),但是可以在properties里面设置其他的默认值,例如2000,01,01


2015-10-15_19h05_18.png



但是,你可以通过js来控制这个值。
1. 我下面附上一个js,你把他放在组件之前,
2. 然后把这个命令放在组件之后:<script>paulScripts.set你的组建名称('PromptName','Clear')</script>

***
<script>

//This file contains various functions and helpers for Cognos 10.2 reports. Do not use this on any other version without first checking with Paul.

 
//Control Scripts for the API. Don't change unless you know what you're doing.
var paulScripts = {};
 
//Gets the control object for the API. promptName refers to the name of the prompt on the page.
paulScripts.getControl = function(promptName) {
  var ocr = cognos.Report.getReport("_THIS_");
  return ocr.prompt.getControlByName(promptName);
};
 
paulScripts.cancelBubble = function(eventOjbect){
  if(!eventObject) var eventObject = window.event;
  if(eventObject.cancelBubble) eventObject.cancelBubble = true;
  if(eventObject.stopPropagation) eventObject.stopPropagation();
};
 

/*
 * DATE PROMPTS
 */
//Date setter
paulScripts.setPrompt = function(promptName, JSONData){
  var prompt = paulScripts.getControl(promptName);
  prompt.setValue([JSONData])
}
 
 
 
 
paulScripts.calculateRangeStart = function(timeFrame) {

  // Get the system year and month
  var currentDate = new Date( );

  // Extract year, month and day components as numbers from current date
  var currentYear = currentDate.getFullYear( );
  var currentMonth = currentDate.getMonth( );     // zero based, January is month 0
  var currentDay = currentDate.getDate( );    // 1 based

  if (timeFrame == "Yesterday") {
    // Calculate yesterday's date including determining if yesterday was in a previous Month and/or Year

    // If today is not the first day of the month, subtract one day and keep the same month and year
    if (currentDay != 1) {               
      var rangeStartYear = currentYear;
      var rangeStartMonth = currentMonth;
      var rangeStartDay = currentDay - 1;
    } else {                                 // Today is the first day of the month so set month to previous month
      if (currentMonth !=  0) {            // First day of Feb through December
        // The Date.setFullYear will return the last day of the previous month if you pass zero as the day
        var workingDate = new Date;
        workingDate.setFullYear(currentYear, currentMonth, 0);

        var rangeStartYear = workingDate.getYear( );
        var rangeStartMonth = workingDate.getMonth( );
        var rangeStartDay = workingDate.getDate( );

      } else {                        // First day of January
        // The Date.setFullYear will return the last day of the previous month if you pass zero as the day
        var workingDate = new Date;
        workingDate.setFullYear(currentYear, currentMonth, 0);

        var rangeStartYear = workingDate.getYear( );
        var rangeStartMonth = workingDate.getMonth( );
        var rangeStartDay = workingDate.getDate( );

      }
    }

  } else if (timeFrame == "PreviousMonth") {
      // Calculate the first day of the previous month based on today's date

      // Set Current Month to previous Month (and Current Year as required)
      if (currentMonth == 0) { //set month and year to previous december and year
          var rangeStartMonth = 11;
          var rangeStartYear = currentYear - 1;
      } else { // set to previous month in same year
          rangeStartMonth = currentMonth - 1;
          var rangeStartYear = currentYear;
      }
      var rangeStartDay = 1; // Always first day of month

  } else if (timeFrame == "YTD") {
      // Calculate the first day of the year based on today's date
      var rangeStartYear = currentYear;
      var rangeStartMonth = 0;     // Always January
      var rangeStartDay = 1;         // Always first day of month

  } else if (timeFrame == "PreviousQuarter") {
      // Calculate the first day of the previous calendar quarter month based on today's date
      // Quarters Conversion is:
      //    Q1 = January to March (Month 0 to 2)      >>> October (9) Previous year
      //    Q2 = April to June (Month 3 to 5)        >>> January (Zero) Same year
      //    Q3 = July to September (Month 6 to 8)        >>> April (3) Same year
      //    Q4 = October to December (Month 9 to 11)    >>> July (6) Same year

      // Set Quarter and Year
      if (currentMonth <= 2) {
          var rangeStartMonth = 9;             // October
          var rangeStartYear = currentYear - 1;        // Previous year
      } else if (currentMonth <= 5) {
          var rangeStartMonth = 0;             // January
          var rangeStartYear = currentYear;        // Same year
      } else if (currentMonth <= 8) {
          var rangeStartMonth = 3;             // April
          var rangeStartYear = currentYear;        // Same year
      } else {
          rangeStartMonth = 6;            // July
          var rangeStartYear = currentYear;        // Same year
      }
      var rangeStartDay = 1;                 // Always first day of month

  } else if (timeFrame == "PreviousYear") {
      var rangeStartYear = currentYear - 1;
      var rangeStartMonth = 0;         // Always January
      var rangeStartDay = 1;         // Always first day of month
  } else {
      alert ("Invalid Time Frame");
  }
  var rangeStart = new Date (rangeStartYear , rangeStartMonth, rangeStartDay);

  return rangeStart;
};

    /*
    *
    * This function calculates the date range end date based on the passed time frame and start date
    *
    */
    paulScripts.calculateEndDate = function(dateRangeStart, timeFrame) {
        // Calculate the end of the date range based on the passed time frame
 
        // Extract Year, Month and Day from passed in dateRangeStart
         var workingYear = dateRangeStart.getFullYear( );
         var workingMonth =  dateRangeStart.getMonth( );
         var workingDay =  dateRangeStart.getDate( );
 
        if (timeFrame == "Yesterday") {
            // use today's date
            dateRangeEnd = new Date( );
        } else if (timeFrame == "PreviousMonth") {
            // Calculate the last day of the passed month
            // The Date.setFullYear will return the last day of the previous month if you pass zero as the day
            var dateRangeEnd = new Date;
            dateRangeEnd.setFullYear(workingYear, workingMonth + 1, 0);
        } else  if (timeFrame == "YTD") {
            // Calculate the current date
            dateRangeEnd = new Date( );
        } else  if (timeFrame == "PreviousQuarter") {
            var endMonth = 0;
            var endDay = 0;
 
            // Calculate the end of the passed quarter
            if (workingMonth == 0) {
                endMonth = 2;        // March
                endDay = 31;        // Last day of March = 31
            } else if (workingMonth == 3) {
                EndMonth = 5;        // June
                EndDay = 30;        // Last day of March = 30
            } else if (workingMonth == 6) {
                endMonth = 8;        // September
                endDay = 30;        // Last day of March = 30
            } else {
                endMonth =11;        // December
                endDay = 31;        // Last day of March = 31
            }
            dateRangeEnd = new Date(workingYear, endMonth, endDay);
 
        } else if (timeFrame == "PreviousYear") {
            var rangeEndYear = workingYear;    // Same year as start range
            var rangeEndMonth = 11;         // Always December
            var rangeEndDay = 31;         // Always last day of December
            dateRangeEnd = new Date(rangeEndYear, rangeEndMonth, rangeEndDay);
 
        } else {
            alert ("calculateEndDate: Invalid Time Frame");
        }
        return dateRangeEnd;
    };
 
 
 
    paulScripts.EncodeDateRangeAsJSON = function(dateRangeStart, dateRangeEnd) {
        // Encode the date range as JSON (JavaScript Literal Notation)
 
        // The following steps will create string representation of the date range start and end dates
        // in the format yyyy-mm-dd such as 2012-01-12 for to encode into JSON
 
        // First, get the year, month and day parts of the date range start
        var yearPart = dateRangeStart.getFullYear( ) ;
        var monthPart = dateRangeStart.getMonth( ) + 1;        // Add 1 month for base zero month (Jan = month 0)
        var dayPart = dateRangeStart.getDate( );
 
        // Second, create the string representation of the date range start
        var startDateString = yearPart + "-" + monthPart + "-" + dayPart;
 
        // Third, get the year, month and day parts of the date range end
        var yearPart = dateRangeEnd.getFullYear( ) ;
        var monthPart = dateRangeEnd.getMonth( ) + 1;        // Add 1 month for base zero month (Jan = month 0)
        var dayPart = dateRangeEnd.getDate( );
 
        // Lastly, create the string representation of the date range end
        var endDateString = yearPart + "-" + monthPart + "-" + dayPart;
 
        // Now that we have our dates as strings, encode the date range as JSON (JavaScript Literal Notation)
        var JSONEncodedDateRange = { 'start': {'use': startDateString}, 'end': {'use': endDateString} };
 
        return JSONEncodedDateRange;
    };
 
    paulScripts.EncodeDateAsJSON = function(dateRangeStart) {
        // Encode the date range as JSON (JavaScript Literal Notation)
 
        // The following steps will create string representation of the date range start and end dates
        // in the format yyyy-mm-dd such as 2012-01-12 for to encode into JSON
 
        // First, get the year, month and day parts of the date range start
        var yearPart = dateRangeStart.getFullYear( ) ;
        var monthPart = dateRangeStart.getMonth( ) + 1;        // Add 1 month for base zero month (Jan = month 0)
        var dayPart = dateRangeStart.getDate( );
 
        // Second, create the string representation of the date range start
        var startDateString = yearPart + "-" + monthPart + "-" + dayPart;
 
        // Now that we have our dates as strings, encode the date range as JSON (JavaScript Literal Notation)
        var JSONEncodedDate =  {'use': startDateString};
 
        return JSONEncodedDate;
    };
 
 
  /*
   * setDatePreset
   * By Rick Blackwell
   * Modified by Paul Mendelson
   * Param 1 is the prompt object name.
   * Param 2 can be one of the following: Clear, Yesterday, PreviousMonth, YTD, PreviousQuarter, PreviousYear
   * Param 3 indicates if the prompt is a range or not. default is false (not a range prompt)
   */
  paulScripts.setDatePreset =  function(promptName,timeFrame,range) {

      if(timeFrame=='Clear')
      {
        document.getElementById('txtDate'+paulScripts.getControl(promptName)._id_).value='';
        return true;
      }
        // Calculate the date range start date
        var dateRangeStart = paulScripts.calculateRangeStart(timeFrame);
 
        // Calculate the date range end date
        var dateRangeEnd = paulScripts.calculateEndDate(dateRangeStart, timeFrame);
 
        // Encode the date range as JSON
        var JSONEncodedDates = range?paulScripts.EncodeDateRangeAsJSON(dateRangeStart, dateRangeEnd):paulScripts.EncodeDateAsJSON(dateRangeStart);
 
        // Set the Date prompt using the JSON encoded date range
        paulScripts.setDatePrompt(promptName, JSONEncodedDates);
    };
 
paulScripts.setDatePrompt = function(promptName,JSONEncodedDates) {
    paulScripts.getControl(promptName).addValues([JSONEncodedDates]);
}
</script>
0

四月天90 - 90后IT媛 2015-10-16 回答

QQ截图20151016103003.png

 
组件前面放的你给我的那个代码

QQ截图20151016103021.png

后面是这个代码:

QQ截图20151016103035.png

这是属性:

QQ截图20151016103122.png

 

要回复问题请先登录注册