Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
I'm using Qlikview version 11.20 SR5 64-bit version.
NONE of the examples I find on the website work, even when I copy paste them in. If I use SET to define the function when I use I simply get the function back as a string.
eg:
SET addTheseForMe = $1 + $2;
trace $(addTheseForMe(1,2));
this will return:
$1 + $2
if I use:
LET addTheseForMe = $1 + $2;
trace $(addTheseForMe(1,2));
I get an empty value. I've reduced it to a simple trace command for now since it wasn't working inside my regular logic. I hear there have been major changes between versions but I seem to be spending more time getting minor functions to (not) work than I am actually investing in solid development time.
FWIW my original UDF is:
set CURRENT_PERIOD_NAME = if(num($1) < 10, 'p0' & $1, 'p' & $1);
(because SET will simply return the function declaration, and if I wrap the response in $() I receive an empty string. If I use 'let' I simply receive 'p' back with no recognition of the $1 value... even when the value passed in is a '1', which should eval to p0 as the returned result.
help!
Hello Dave,
You can accomplish this by creating a macro (Tools -> Edit Module), such as this one:
Function addTheseForMe(var1, var2)
addTheseForMe= var1+var2
End Function
Then, allow macros to run during the load with by check this box in the Document's properties:
Finally, if you may access the function in your load script as such:
LET varA = 7;
LET varB = 8;
LET varAB = addTheseForMe(varA, varB);
Please find the example application in attachement, regards,
Philippe
me too I have 11.20 SR5
script and log are
SET addTheseForMe = $1 + $2;
TRACE $(addTheseForMe(1,2)); // 1 + 2
let result=$(addTheseForMe(1,2));
trace $(result); // 3
set cpn = if(num($1) < 10, 'p0' & $1, 'p' & $1);
TRACE $(cpn(1);
let result=$(cpn(1));
trace $(result); // p01
let result=$(cpn(10));
trace $(result); // p10