Help with for loop

Abhijit Das7
Tera Expert

Hi Everyone,

 

I am trying to update multiple system properties using for loop. But it only updates one system property 

var propertiesArray = ["propertyName1", "propertyName2", "propertyName3", "propertyName4", "propertyName5", "propertyName6" ]

var sysProp = new GlideRecord("sys_properties");
            for (var b = 0; b < propertiesArray.length; b++) {
                sysProp.addQuery("name", propertiesArray[b]);
                sysProp.query();
                if (sysProp.next()) {
                    gs.info("Property name = " + propertiesArray[b]);
                    if (propertiesArray[b] == 'propertyName1') {
                        sysProp.value = "X1";
                    }
                    if (propertiesArray[b] == 'propertyName2') {
                        sysProp.value = "X2";
                    }
                    if (propertiesArray[b] == 'propertyName3') {
                        sysProp.value = "X3";
                    }
                    if (propertiesArray[b] == 'propertyName4') {
                        sysProp.value = "X4";
                    }
                    if (propertiesArray[b] == 'propertyName5') {
                        sysProp.value = "X5";
                    }
                    if (propertiesArray[b] == 'propertyName4') {
                        sysProp.value = "X6";
                    }
					sysProp.update();
                }
            }

 

Can anyone point out where I am committing mistake in code.

 

Thanks in advance 

1 ACCEPTED SOLUTION

Brad Bowman
Kilo Patron
Kilo Patron

You have to instantiate the GlideRecord within the for loop

var propertiesArray = ["propertyName1", "propertyName2", "propertyName3", "propertyName4", "propertyName5", "propertyName6" ]

for (var b = 0; b < propertiesArray.length; b++) {
    var sysProp = new GlideRecord("sys_properties");
    sysProp.addQuery("name", propertiesArray[b]);
    sysProp.query();
    if (sysProp.next()) {
            gs.info("Property name = " + propertiesArray[b]);
            if (propertiesArray[b] == 'propertyName1') {
                sysProp.value = "X1";
            }
            if (propertiesArray[b] == 'propertyName2') {
                sysProp.value = "X2";
            }
            if (propertiesArray[b] == 'propertyName3') {
                sysProp.value = "X3";
            }
            if (propertiesArray[b] == 'propertyName4') {
                sysProp.value = "X4";
            }
            if (propertiesArray[b] == 'propertyName5') {
                sysProp.value = "X5";
            }
            if (propertiesArray[b] == 'propertyName4') {
                sysProp.value = "X6";
            }
	        sysProp.update();
    }
}

View solution in original post

1 REPLY 1

Brad Bowman
Kilo Patron
Kilo Patron

You have to instantiate the GlideRecord within the for loop

var propertiesArray = ["propertyName1", "propertyName2", "propertyName3", "propertyName4", "propertyName5", "propertyName6" ]

for (var b = 0; b < propertiesArray.length; b++) {
    var sysProp = new GlideRecord("sys_properties");
    sysProp.addQuery("name", propertiesArray[b]);
    sysProp.query();
    if (sysProp.next()) {
            gs.info("Property name = " + propertiesArray[b]);
            if (propertiesArray[b] == 'propertyName1') {
                sysProp.value = "X1";
            }
            if (propertiesArray[b] == 'propertyName2') {
                sysProp.value = "X2";
            }
            if (propertiesArray[b] == 'propertyName3') {
                sysProp.value = "X3";
            }
            if (propertiesArray[b] == 'propertyName4') {
                sysProp.value = "X4";
            }
            if (propertiesArray[b] == 'propertyName5') {
                sysProp.value = "X5";
            }
            if (propertiesArray[b] == 'propertyName4') {
                sysProp.value = "X6";
            }
	        sysProp.update();
    }
}