Storing different values containing commas (,) to a GlideList using transform Maps
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2013 10:58 AM
Hi Friends,
I am configuring Software Licenses form. I have a field called as Entitled Location which is a " Glide List " ( the one with a lock icon ).
i am migrating data using staging tables & transform maps. When i transfer data to this field ( Entitled Location ), it delimits the values by comma (,).
The irony is my data does contain comma. Here is an example :
Value to be migrated : Perth,Australia.
However, if i don't customize this, it gets stored as 2 values : Perth & Australia . Understand that since glidelist delimits values by " , " by default.
Next, I write a Transform Script in my transform maps to delimit the values by Semi-colon ( ; ) and query the locations table to only give valid values [ if i don't query, Glide list seems to take anything ( i really mean anything - even if its not a valid location)].
Here is my Code :
var locations=source.u_entitled_location; //taking locations from staging table
var gr = new GlideRecord('cmn_location');
var temp= new Array();
temp=locations.split(";");//delimiting by ; since multiple values have ; inbetween in my data
var length=temp.length;
for(var i =0;i<temp.length;i++)
{
var check = temp<i>;
var locationName = check.toString();
gr.addQuery('name',locationName);
gr.query(); // querying the location table to check whether its a valid value or not
while(gr.next())
{
target.u_entitled_location=gr.sys_id;
}
gr.update();
}
The problem here is that only one value gets transformed in my Target table.
Example ( Value in Staging table ) --> Perth,Australia;Sydney,Australia
Current Value in Target Table : Perth,Australia
Expected Value : Perth,Australia,Sydney,Australia where Perth,Australia is 1st value & Sydney,Australia is 2nd value
Though it delimits at ; and gives me a proper value, it gives only the value at the first position & ignored Sydney,Australia
Can someone have a look & help me out with this ? Thanks a lot in advance guys!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-05-2013 11:11 AM
It's working for me so I'm not really sure what to say. Put some debug stuff in to see where it's failing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-06-2013 08:37 AM
Thanks Matt.
I tried it in a different way & it worked.
Thought it's worth to post my code. Here it is :
locs = [];
var locations=source.u_entitled_location; //taking locations from staging table
temp=locations.split(";");//delimiting by ; since multiple values have ; inbetween in my data
var length=temp.length;
for(var i=0;i<length;i++){
var check = temp<i>;
var locationName = check.toString();
var gr = new GlideRecord('cmn_location');
gr.addQuery('name',locationName);
gr.query();
while(gr.next()){
locs.push(gr.sys_id.toString());
}
}
target.u_entitled_location = locs.toString();
Thanks for your help though! CHeers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-04-2013 07:33 PM
Unfortunately, I do not have access to the Background Scripts.
I tried it with " On Before " Transform Script