Aggregate count not working

Dead Blade
Kilo Guru

Hello All, the aggregate count is not working as expected.  Please help.  The dot-walk addQuery should return a count of 100 for example, but I am getting 0 results.

		
var count = new GlideAggregate('alm_hardware');   
count.addQuery('model.u_field','1111111');
count.addAggregate('COUNT');  
count.query();

gs.log("This count is empty: "+count.getAggregate('COUNT'));
if(count.next()){

gs.log("This count is working: "  +count.getAggregate('COUNT'));
gs.log('count');
}

Results:

*** Script: This count is empty: null
*** Script: This count is working: 0
*** Script: count
*** Script:
----------------------------------------------------------

The Second row should be a count of 100
1 ACCEPTED SOLUTION

To help you, you can run this code:

var usedModels = 0;
var grModel = new GlideRecord('cmdb_model');
grModel.addQuery('u_field', '1111111');
grModel.query();
while (grModel.next()) {
    var grHardware = new GlideRecord('alm_hardware');
    grHardware.addQuery('model', grModel.getUniqueValue());
    grHardware.query();
    if (grHardware.next()) {
        gs.log("The model: " + grModel.getDisplayValue() +  " is used in Hardware");
        usedModels++;
    }

}
gs.log("There are: " + grModel.getRowCount() + ' Models available with 111111');
gs.log("There are: " + usedModels + ' Models used for Hardware with 111111');

 

Please share the log results.

View solution in original post

37 REPLIES 37

Not sure what the result is you want? There are no models used that have the u_field set to 1111111 in the alm_hardware table as you confirmed.

So whatever code you use, will always return 0. Because that is the number of models that have u_field set to 1111111 in the alm_hardware table.

If you want to retrieve a count of all models that have u_field set to 1111111 , then you have to query/glide aggregate cmdb_model, like you did.

 

There is no way to count things in a table, that are not used in that table. It will always return 0.

Hi Willem,

The field is dot.walked on the alm_hardware form.  But I cannot add it to the list view.

find_real_file.png

 

find_real_file.png

 

So, shouldn't I be able to get a count of how many alm_hardware records = model.u_field "111111"

is u_field a reference field? If so, you should use the sys_id of the reference value like so:

(replace the sys_id with the sys_id value)

		
var count = new GlideAggregate('alm_hardware');   
count.addQuery('model.u_field','the sys_id');
count.addAggregate('COUNT');  
count.query();

gs.log("This count is empty: "+count.getAggregate('COUNT'));
if(count.next()){

gs.log("This count is working: "  +count.getAggregate('COUNT'));
gs.log('count');
}

 

Or use the field that contains the name/display value:

		
var count = new GlideAggregate('alm_hardware');   
count.addQuery('model.u_field.name','1111111');
count.addAggregate('COUNT');  
count.query();

gs.log("This count is empty: "+count.getAggregate('COUNT'));
if(count.next()){

gs.log("This count is working: "  +count.getAggregate('COUNT'));
gs.log('count');
}

 

 

If it is not a reference, it should find the value if the u_field on the model is exactly matching the 1111111.  Are you sure it is an exact match?

It is an exact match.  u_field is not a reference field, it is a string field on the cmdb_model table.  Of course "model" is a reference field on the alm_hardware table.

I just attempted to use the original rowCount code and it is not returning a value either.  So maybe something is wrong with the table reference.

I just tried to addQuery to just the model and 0 results.

var gr3 = new GlideAggregate('alm_hardware');  
gr3.addAggregate('COUNT'); 
gr3.addQuery('model','Precision 3541');
gr3.query();

gs.log("This count is empty: "+gr3.getAggregate('COUNT'));
while(gr3.next()){
gs.log("This count is working: "+gr3.getAggregate('COUNT'));
gs.log('gr3');
}

*** Script: This count is empty: null
*** Script: This count is working: 0
*** Script: gr3


find_real_file.png = (MORE THAN 0)

The script should have returned more than 0.

Can you share screenshot of the result when you filter the table?

 

So something like this:

(replace barcode with your field and 5555 with your value)

find_real_file.png

 

Do you get any results?