
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How to Set variable in Expression
Hi
In my foreground text expression in my text object I want to define a variable. I've tried to put it in the first line but then it picks it up as text... Looks like the expression must start with a =...
My expression:
=Maxstring(If([L1] = Var5_4 and [L2]=d,[L1])) & chr(13)
&Maxstring(If([L1] = Var5_4 and [L2]=d,[HoverText])) & '.'& chr(13) &'Actual: '
&Maxstring(If([L1] = Var5_4 and [L2]=d,[Actual])) & chr(13) &'Target: '
&Maxstring(If([L1] = Var5_4 and [L2]=d,[Target])) & chr(13) &'Exceed: '
&Maxstring(If([L1] = Var5_4 and [L2]=d,[Exceed])) & chr(13) &'Threshold: '
&Maxstring(If([L1] = Var5_4 and [L2]=d,[Threshold]))
I want it to be something like this:
set L1Variable = Var5_4
set L1Variable = d
=Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[L1])) & chr(13)
&Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[HoverText])) & '.'& chr(13) &'Actual: '
&Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[Actual])) & chr(13) &'Target: '
&Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[Target])) & chr(13) &'Exceed: '
&Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[Exceed])) & chr(13) &'Threshold: '
&Maxstring(If([L1] = L1Variable and [L2]=L1Variable ,[Threshold]))
This will save me a lot of time when duplicating the text object... Currently I need to copy the new variables in all 6 lines;) First prise will be to set the object ID as L1Variable but the defining of variables here will do for now.
Thanks!!
Eon

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Eon,
You can't define variables within the separate objects. Instead you need to define a variable in the document (can be created under Settings and Document Properties, Variables). This variable can then be references within the text object. Or any other object for that matter.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
Thanks for your reply!
This will not work for me... I still need to change the variables in 6 places everytime I copy the text object (and I need about 200 of them)!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there maybe a way I can create a little vb function in Tools -> Edit module and just call it from the expression?


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eon wrote:Is there maybe a way I can create a little vb function in Tools -> Edit module and just call it from the expression?
No, but you can do something simliar. Put the expression in a variable ("myvar") and call it with parameters.
$(myexpr('Var5_4', 'd'))
See this similar thread for more detail: http://community.qlik.com/forums/p/18140/70920.aspx#70920
-Rob

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
you can also create this:
LET L1Variable = 'Var5_4';
LET L2Variable = 'd';
=Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[L1])) & chr(13)
&Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[HoverText])) & '.'& chr(13) &'Actual: '
&Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[Actual])) & chr(13) &'Target: '
&Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[Target])) & chr(13) &'Exceed: '
&Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[Exceed])) & chr(13) &'Threshold: '
&Maxstring(If([L1] = '$(L1Variable)' and [L2]='$(L2Variable)' ,[Threshold]))
This way you only have to change the values of L1Variable and L2Variable.
Greetings
Rey-man
