Hi There,
below are some notes that a friend of mine provided me, I hope this helps
Brief description of each bracket Enum value :
1. StartBracket simply creates a opening bracket – (
2. EndBracket simply creates a closing bracket - )
3. AndBracket simply creates a AND and opening and closing brackets – AND ()
4. OrBracket simply creates a OR and opening and closing brackets – OR ()
The following Filter buildup using the API
1. crit.AddFilterField(sc.WCLogical.StartBracket, sc.WCField.None, sc.WCCompare.Equal, null);
2. crit.AddFilterField(sc.WCLogical.StartBracket, sc.WCField.None, sc.WCCompare.Equal, null);
3. crit.AddFilterField(sc.WCField.ActivityName, sc.WCCompare.Equal, "123");
4. crit.AddFilterField(sc.WCLogical.Or, sc.WCField.ActivityName, sc.WCCompare.Like, "345");
5. crit.AddFilterField(sc.WCLogical.EndBracket, sc.WCField.None, sc.WCCompare.Like, null);
6. crit.AddFilterField(sc.WCLogical.And, sc.WCField.None, sc.WCCompare.Equal, null);
7. crit.AddFilterField(sc.WCLogical.StartBracket, sc.WCField.None, sc.WCCompare.Equal, null);
8. crit.AddFilterField(sc.WCField.ActivityName, sc.WCCompare.Like, "45");
9. crit.AddFilterField(sc.WCLogical.Or, sc.WCField.ActivityName, sc.WCCompare.Like, "12");
10. crit.AddFilterField(sc.WCLogical.EndBracket, sc.WCField.None, sc.WCCompare.Like, null);
11. crit.AddFilterField(sc.WCLogical.EndBracket, sc.WCField.None, sc.WCCompare.Equal, null);
12. crit.AddFilterField(sc.WCLogical.AndBracket, sc.WCField.ActivityName, sc.WCCompare.Like, "12");
will result to filter in the SQL script as per the trace below.
(
(
ACT.Name = 123" OR ACT.Name LIKE "345"
)
AND
(
ACT.Name LIKE "45" OR ACT.Name LIKE "12"
)
)
And (ACT.Name LIKE "12”)
Wow,
Thanks, that seems to be a complete answer:-) I'm going to try this out!
greetz Marco
I seem to have a problem with the filterfields and ProcessData subfields,
code:
crit.AddFilterField(SWC.WCLogical.StartBracket, SWC.WCField.None, SWC.WCCompare.Equal, null);
crit.AddFilterField(SWC.WCLogical.Or, SWC.WCField.ProcessData, FieldName, SWC.WCCompare.Equal, FieldValue);
crit.AddFilterField(SWC.WCLogical.Or, SWC.WCField.ProcessData, FieldName, SWC.WCCompare.Equal, FieldValue);
crit.AddFilterField(SWC.WCLogical.Or, SWC.WCField.ProcessData, FieldName, SWC.WCCompare.Equal, FieldValue);
crit.AddFilterField(SWC.WCLogical.EndBracket, SWC.WCField.None, SWC.WCCompare.Equal, null);
I want to add more filters for other fields so thats why i need the start/end brackets around these OR fields,
because the AddFilterField doesn't have a overload with a subfield without the WCLogical enum i cannot start with a
crit.AddFilterField(SWC.WCField.ProcessData, FieldName, SWC.WCCompare.Equal, FieldValue);
I'm getting a 'Object Graph cannot be null' error on this situation. Any ideas?
So the outcome should be something like:
(
FieldName = FieldValue Or FieldName = FieldValue Or FieldName = FieldValue
)
Can u convert this code as mathematical logic
_worklistCriteria.AddFilterField(WCLogical.AndBracket, WCField.WorklistItemOwner, "Me", WCCompare.Equal, WCWorklistItemOwner.Me);
_worklistCriteria.AddFilterField(WCLogical.Or, WCField.WorklistItemOwner, "Other", WCCompare.Equal, WCWorklistItemOwner.Me);
_worklistCriteria.AddFilterField(WCLogical.AndBracket, WCField.WorklistItemStatus, WCCompare.Equal, WorklistStatus.Open);
_worklistCriteria.AddFilterField(WCLogical.Or, WCField.WorklistItemStatus, WCCompare.Equal, WorklistStatus.Available);
Thanks.
Murphy, I followed your syntax with 4.6.7 and the result does not match the filter criteria. I've opened ticket with support.
StartBracket
PocessFolder, Equal
Or ProcessFolder, Equal
EndBracket
And
StartBracket
Folio LIKE
Or ProcessXML Field LIKE <--- this is ignored if I have more than 1 filter here
End Bracket
StartBracket
Or ProcessXML Field LIKE <--- by itself it works
End Bracket
Tried many combinations, no more hair to pull...