Are you using LET or SET to define the variable?
SETdefines it as a function, whereas LET will evaluate the function before storing to the vairable. to quote the helpfile
$(x) will be evaluated as ' 3+4 '
$(y) will be evaluated as ' 7 '
$(z) will be evaluated as ' 8 '
Let T=now( );
$(T) will be given the value of the current time.
In this instance you need to use LET.
Also, when using the dollar sign expansion the variable may be evaluated as a direct text substitute in the expression.
Store Dinamalar_MoneyValue into Dinamalar_MoneyValue & '_'&$(vToday).qvd (qvd);
may be evaluated as EG
4.50 & '_'&15-12-2011 - which would fail
IE it is evaluating it as if you wrote it directly into the script.To solve this I place dummy quote characters around the variable when declaring it. There is no "escape" character so i use the character chr(39) concatenated with the rest of the text.
Hope any of this helps.
I agree with Erica in using a let statement in your variable definition:
Let vToday = Date(Today(1),'DD-MMM-YYYY');
(I recommend also to use an explicite timer_mode for today and other timer functions, I assume time at function call is what you want in the script).
For the Store statement you just pass a filename without single quotes. The filename will not be evaluated for QV statements (besides dollar sign expansion), so there is no need to use concatenation operator & and single quotes to create a string
(in fact, all these stuff will just be part of your file name: Dinamalar_MoneyValue & '_'&14-Jan-2012.qvd )
This is probably not what you want, just use
Store Dinamalar_MoneyValue into Dinamalar_MoneyValue_$(vToday).qvd (qvd);
The dollar sign expansion will expand to your today's date, so the line will be evaluated as:
Store Dinamalar_MoneyValue into Dinamalar_MoneyValue_14-Jan-2012.qvd (qvd);
I believe this is what you want.
You already formatted yor data with - as separators, which is good. If you use / as separator like in US style, this would be interpreted as folder path separator by the Windows OS.
Hope this helps,
I didn't realise that you would get the '&' in there too, I've always passed the filename (unecessarily) in quotes. Learn something new!
What if I wanted to use a filename with eg a space in it, do you need to do someting else or can you just leave it... or just not pass the file to a path with spaces in it?
I usually try to avoid using spaces etc. in file / path names, but I know that sometimes you have to cope with it.
I haven't found to much about the possible syntax of the filename in the Help, maybe I just missed the relevant.
But it's it quite easy to try, so let's see:
It seems that you can just use spaces in your filename:
Store INPUT into TestStore_ $(vToday) b.qvd;
Notice the two spaces after _ and before b. The resulting filename is
TestStore_ 2012-01-15 b.qvd
QlikView seems to parse the text after into a before the semicolon or a paranthesis as filename.
Store INPUT into TestStore_ $(vToday) b.qvd (qvd);
Here, (qvd) is the file format indicator, not part of the filename. What, if you need paranthesis at the end of the filename (well, not really meaningful, but ...) or a space at the beginning?
Put your filename in single quotes:
Store INPUT into ' TestStore_ $(vToday) b.qvd (qvd)';
Resulting filename is:
TestStore_ 2012-01-15 b.qvd (qvd)
Seems to work quite ok.
If you use enclosing single quotes as well as single quotes inside:
Store INPUT into ' TestStore_'&' $(vToday) b.qvd (qvd)';
you'll get all single quotes removed, like this:
TestStore_& 2012-01-15 b.qvd (qvd)
If you only use the inside single quotes,
Store INPUT into TestStore_'&' $(vToday) b.qvd (qvd);
the single quotes are still kept as part of the filename, and the file format specifier is also still part of the file name, little strange.
TestStore_'&' 2012-01-15 b.qvd (qvd)
And if you use only one single quote:
TestStore_'& 2012-01-15 b.qvd (qvd); Let a = 10;
The file is stored with correct filename and without the (qvd), but the following statements are not syntax highlighted correctly and variable a is not set to 10.
So I think spaces should not be a problem, you could get some more work if you want to use single quotes. Here I stopped for now.