0

Is it possible to search/filter on columns with Agresso's QueryEngineService? I've been playing around with SearchCriteria.SearchCriteriaPropertiesList and TemplateResultOptions.Filter but without any luck. I havn't been able to locate any documentation on this matter either.

QueryEngineService.TemplateList templateList = QueryEngineService.GetTemplateList(null, null, Credentials);

var template = templateList.TemplateHeaderList.FirstOrDefault(x => x.Name == strViewName);

if (template == null)    
    return null;                        

QueryEngineService.SearchCriteria searchProp = QueryEngineService.GetSearchCriteria(template.TemplateId, false, Credentials);                       

QueryEngineService.TemplateResultOptions options = QueryEngineService.GetTemplateResultOptions(Credentials);
options.RemoveHiddenColumns = true;       

QueryEngineService.InputForTemplateResult input = new QueryEngineService.InputForTemplateResult();
input.TemplateResultOptions = options;
input.TemplateId = template.TemplateId;            
input.SearchCriteriaPropertiesList = searchProp.SearchCriteriaPropertiesList;


QueryEngineService.TemplateResultAsDataSet result = QueryEngineService.GetTemplateResultAsDataSet(input, Credentials);

return result.TemplateResult;
Jimmy Mattsson
  • 2,085
  • 5
  • 19
  • 34

2 Answers2

0

You can try to start with this:

List<SearchCriteriaProperties> searchCriteriaProperties = searchCriteria.getSearchCriteriaPropertiesList().getSearchCriteriaProperties();

        SearchCriteriaProperties columnFilter = null;

        for (SearchCriteriaProperties criteria : searchCriteriaProperties) {


            if(criteria.getColumnName().equalsIgnoreCase("ColumnNameHere")) {

                columnFilter = criteria;
                columnFilter.setRestrictionType("=");
                columnFilter.setFromValue("valueToAssign");
            }
        }

Next is add the columnFilter variable to an instance of the ArrayOfSearchCriteriaProperties() object by using the getSearchCriteriaProperties().add()

ArrayOfSearchCriteriaProperties filter = new ArrayOfSearchCriteriaProperties();
        filter.getSearchCriteriaProperties().add(columnFilter);

You can now add the filter object to an instance of the InputForTemplateResult() object.

Mike Rayco
  • 336
  • 1
  • 9
  • I'm missing most of the methods you wrote (diffrent version maybe?), but I was able to use trial and error to get it to work. Accepting this as the answer as it led me to the working solution. – Jimmy Mattsson Jan 29 '18 at 11:23
0

Working solution (for me)

QueryEngineService.SearchCriteria searchProp = QueryEngineService.GetSearchCriteria(template.TemplateId, false, Credentials);                       

foreach (QueryEngineService.SearchCriteriaProperties criteria in searchProp.SearchCriteriaPropertiesList)
{
    if(criteria.ColumnName.Equals("column_name", StringComparison.OrdinalIgnoreCase))
    {
        criteria.RestrictionType = "=";
        criteria.FromValue = "value";                        
    }
}    

//Rest of the code from question above
Jimmy Mattsson
  • 2,085
  • 5
  • 19
  • 34