07-29-2016 07:52 AM
Its Friday in the summer, brain not engaged. What am I doing wrong below?
This GetCustomEntities returns the correct record count:
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(0) {}
ArrayFilterCriteria(0) = New ComparisonFilterCriteria(fielddescriptor, ComparisonFilterCriteria.Operation.Equals, "UPS")
me.entityList = Me.EntityManager.GetCustomEntities(Nothing, ArrayFilterCriteria)
This GetCustomEntities (with an OR) returns no records. It should return more then the above example:
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(2) {}
ArrayFilterCriteria(0) = New ComparisonFilterCriteria(fielddescriptor, ComparisonFilterCriteria.Operation.Equals, "UPS")
ArrayFilterCriteria(1) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.Or)
ArrayFilterCriteria(2) = New ComparisonFilterCriteria(fielddescriptor, ComparisonFilterCriteria.Operation.Equals, "FXF")
me.entityList = Me.EntityManager.GetCustomEntities(Nothing, ArrayFilterCriteria)
Thanks in advance.
-- JimDurkin
08-01-2016 02:09 PM
For those that want t know I found the solution.
You need to type the field descriptor to System.ComponentModel.PropertyDescriptor. I was passing in the feidl descriptor as CustomEntityFieldDescriptor.
The fix for the code is:
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(2) {}
ArrayFilterCriteria(0) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "UPS")
ArrayFilterCriteria(1) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.Or)
ArrayFilterCriteria(2) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "FXF")
me.entityList = Me.EntityManager.GetCustomEntities(Nothing, ArrayFilterCriteria)
08-01-2016 02:30 PM
03-07-2017 11:06 PM
I followed your code exactly and I get this error when debugging, code works for 1 field but as soon as I ad the 'OR' and second field it fails. Any ideas why?
03-08-2017 05:48 AM
03-08-2017 07:04 AM
Sorry should have had more details, I just want to pull a list of all the custom entities that contain the status value of Active or Pending, it always fails on the last line marked below. Any help would be greatly appreciated.
Dim manager As CustomSubEntityManager(Of Act.Framework.CustomEntities.CustomSubEntity) = Me.actApplication.ActFramework.CustomEntities.GetSubEntityManager(Of Act.Framework.CustomEntities.CustomSubEntity)(entityName)
If manager IsNot Nothing Then
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(2) {}
ArrayFilterCriteria(0) = New ComparisonFilterCriteria(CType(manager.GetCustomEntityFieldDescriptor("Status", Act.Framework.MutableEntities.FieldNameType.[Alias]), System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Pending")
ArrayFilterCriteria(1) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.Or)
ArrayFilterCriteria(2) = New ComparisonFilterCriteria(CType(manager.GetCustomEntityFieldDescriptor("Status", Act.Framework.MutableEntities.FieldNameType.[Alias]), System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Active")
customSubEntities = manager.GetCustomEntities(Nothing, ArrayFilterCriteria)
*********FAILS ON THE LINE ABOVE
end if
03-08-2017 07:22 AM
03-08-2017 07:43 AM
Gave that a try using the code below, same error, in debug mode I can confirm the field descriptor object is returning the right field and has a value. So odd, any other ideas?
Dim fielddescriptor As Object = manager.GetCustomEntityFieldDescriptor("Status", Act.Framework.MutableEntities.FieldNameType.[Alias])
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(2) {}
ArrayFilterCriteria(0) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Closed")
ArrayFilterCriteria(1) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.Or)
ArrayFilterCriteria(2) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Active")
03-08-2017 09:04 AM
I had to look this one up in Object Browser. I had remembered some 3rd party api used an "End" clause, and it happens to be ACT. Not sure if this'll work, but worth a shot.
Dim ArrayFilterCriteria As IFilterCriteria() = New IFilterCriteria(3) {} ArrayFilterCriteria(0) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Closed") ArrayFilterCriteria(1) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.Or) ArrayFilterCriteria(2) = New ComparisonFilterCriteria(CType(fielddescriptor, System.ComponentModel.PropertyDescriptor), ComparisonFilterCriteria.Operation.Equals, "Active") ArrayFilterCriteria(3) = New FilterClause(ArrayFilterCriteria, FilterClause.LogicalConnector.End)
03-08-2017 09:23 AM
I tried your suggestion and it says End is not a member of FilterClause.LogicalConnector, only lets me choose Or/And