Any Predefined Method to find a maximum value of a field ?

naresh1019
Mega Expert

Hello Guys ?

I am working on a requirement, where I need to create a custom table in which we have a currency field.

It is some what like a auction amount kind where the new entry in the currency field   should always be $25(minimum) more than the maximum value of   that the current field in the table ?

so do we have any predefined method or I need to go with script ?

Thanks Guys....

1 ACCEPTED SOLUTION

Deepak Ingale1
Mega Sage

Hi Naresh,



You can try below



  var count = new GlideAggregate('yourTableName');


  count.addAggregate('MAX', 'yourFieldName');


  count.query();    


  if (count.next()) {  


        var max = count.getAggregate('MAX', 'yourFieldName');


        gs.log("Maximum value for field yourFieldName is " + max);


  }



http://wiki.servicenow.com/index.php?title=GlideAggregate#gsc.tab=0


View solution in original post

8 REPLIES 8

Hi Sishir please comment on the following ....



1) did you check the code with highlighted in the image



find_real_file.png



though the value of "u_field_3" is defined as integer in the table, still do we need to typecast !


3)   find_real_file.pngfind_real_file.png


the last two images is having only temp value changed to 50 look at the o/p.


Total values in the table = 12;


and values are following


find_real_file.png


Thanks


I can see in your table there is total 11 records.



when you run below code, how are you making sure that record will always get you the temp value as 50? The better way to use GlideAggregate to get the Max value of the field and then do the comparison (as sugegsted by Deepak).



var gr = new GlideRecord('u_table_1);


gr.query();


gr.next();


var temp = gr.u_field_3;



If field type is integer then i think type casting is not required, you can check and try.



in your 3rd screen shot you are using parseInt(gr.u_field_3) > temp, but variable temp is not an integer, you can change it to gr.u_field_r > parseInt(temp) and try.



It is always recommended to use getValue() instead of directly accessing the field value with gliderecord.



Hi Naresh,



may i know what exactly are you trying to accomplish here.


if i check the 4th line in your query , it will always return you minimum integer value .eg: if you have list of values stored in u_field_3 (10,20,30,50,60)


It will always give you 10. do you have any set of numbers that you need to compare with u_field_3 values.



var test='';


var abc= new GlideRecord('u_table_1');


abc.query();


while(abc.next())


{


test=abc.u_field_3;


if(test>50)


{


gs.print('it is a demo');


}


else


{


gs.print('help');


}


}


The ServiceNow Wiki content is no longer supported. Updated information about this topic is located here: GlideAggregate
 




Visit http://docs.servicenow.com for the latest product documentation