Article
How can I filter a field by the "Exists " filter with a parameter (another field value)
11:04 Jul 09, 2018
Question
How can I filter a field by the "Exists " filter with a parameter (another field value)?
Answer
Example of implementation the "Exists " filter:
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { "rootSchemaName": "Account" }); // add the request columns esq.addColumn("Id"); ... // filtering condition for using inside of "exists" // searchValue - value for comparing with the SearchNumber column var subFilters = Terrasoft.createFilterGroup(); subFilters.addItem(Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "SearchNumber", searchValue)); // add the exists-filter with a condition to the esq filter collection var filters = esq.filters; filters.add(Terrasoft.createExistsFilter("[AccountCommunication:Account:Id].Id", subFilters)); //receive the request value esq.getEntityCollection(function(result) { ... }, this);
As a result, the following request will be sent to the server:
SELECT Id, ... FROM Account WHERE EXISTS (SELECT [SubAccountCommunication].[Id] [Id] FROM [dbo].[AccountCommunication] [SubAccountCommunication] WITH(NOLOCK) WHERE [SubAccountCommunication].[AccountId] = [Account].[Id] AND [SubAccountCommunication].[SearchNumber] = @P1 )
The @P1 parameter will store the searchValue value passed over to the filtering condition.