If you are unable to create a new account, please email support@bspsoftware.com

 

Report expression in a Layout calculation getting RSV-VAL-0002 Invalid expressio

Started by bioCam, 20 Jun 2011 08:48:03 PM

Previous topic - Next topic

bioCam

When my report in run, it will run with default to yesterday's date (using Default Selection 1900-01-01 an unused date, in Filter check for this unused date and replaced it with Yesterday date). My parameter Date at this point is still the default 1900-01-01.

In Cognos Viewer, there is a prompt for date entry so user can select other days.

In my report header, I used a Layout Calculation to display the Date selected. I would have to put in checks in report expression to trap the parameter Date since the parameter Date is 1900-01-01 when the report is first run.

Report expression:
-------
if
( ParamDisplayValue('parameter_date') = '1900-01-01' )
then
( date2string( _add_days(Today(), -1) ) )
else
( ParamDisplayValue('parameter_date') )
------
I kept getting RSV-VAL-0002 Invalid expression ---> I think the syntax is working, just don't understand why its giving me error.

I posted my question on another website and someone provided this solution (some reason I cannot respond which is why I am posting in this website)

This solution does not show error but it does not display the date, it just displays nothing.
-----------------------------
( ParamDisplayValue('parameter_date') = '1900-01-01' )
then
THEN (number2string(string2double(date2string(Today ())) -1 ))
else
( ParamDisplayValue('parameter_date') )
----------------------------------
Please help - I have been tossing with this problem almost the whole day and getting nowhere.

Thank you.

CognosPaul

_add_days work with timestamps, date2string needs a date. Try the following:
date2string(timestamp2date( _add_days(date2timestamp(Today()), -1) ))

bioCam

Hi PaulM ...thank you so much - you have saved day :)  It works - I have spent so much time yesterday trying different options  :-\ but nothing would work.

Another question regarding formatting the date -
It is displayed as '2011-06-20' and I would like to format to '20-Jun-11' or in general how I can format the date to any display type?

Thank you.

CognosPaul

At this point I would change it to display as a date, then use the data format on the text object.


if
( ParamDisplayValue('parameter_date') = '1900-01-01' )
then
(timestamp2date( _add_days(date2timestamp(Today()), -1) ))
else
( string2date(ParamDisplayValue('parameter_date') ))


Instead of returning a string, that will return a proper date which you can then format any way you want.

bioCam

Thank you so much once again PaulM - my problem is totally resolved.  Summer starts today I think -- Happy Summer  :D