0
Answered

Filter records retrieved from chris21

Jake Vosloo 8 years ago in UNIFYBroker/Frontier ichris/chris21 updated by anonymous 7 years ago 8

The IDB chris21 connector has the ability to send a filter to chris21 when querying for users.

I attempted to write a filter as described by the chris21 BRE SDK documentation but are unable to get my query to work.


The filter has the following syntax: field:operation:value:[join]


I tested the query on the test web page for chris BRE: https://localhost/Scalable/post21.htm


The following example filter works fine:

:cbr="poslst",maxlines=1,sendfields="S",filter01="posstart:<=:=T:"


But if I modify it to filter on detnumber, it doesn’t work anymore:

:cbr="detlst",maxlines=1,sendfields="S",filter01="detnumber:=:=100001"


The error I receive is:

error01="BRE353:detnumber: No connector provided for filter.",status="fail"


Any ideas how to fix my filter on detnumber?

Answer

Answer

As discovered with Jake, the "No connector provided for filter" is because a fourth operator to the filter is required, even if there is only one filter. The operator is AND or OR.


The Identity Broker for Frontier chris21 documentation will be updated to reflect this.


Thanks to Jake for working with us for an answer.

Will be answered

First thing to check - what happens if we leave the filter out?

If I run it without the filter it gives me one record back.

GTR,N32W50E2R   T9485S91     1511 249F6YRO44I6 03:cbr="detlst",maxlines="1",sendfields="A",startoflist,status="ok" 
GTR,N32W50E2R   T9485S91     1511 249F6YRO44I6 03:cbr="detlst",maxlines="1",sendfields="A",detnumber="100001",dettitle="Mr",detsurname="Bjorn GLOBAL_M",detdatejnd="1989-01-03",detg1name1="Joseph",detg1name2="A",detg1name3,detprefnm,detpresurn,dettele="4882",detalttele,detbirdate="1957-06-24",detsex="M",detcntrynm,detcitcd,detmarcd="M",detmardate,detemailad="Joseph.BjornGLOBAL_M@unifydemo.local",detaltnbr="079285",detabn,detrace,dettinnumb,detpaytype,detterdate,detcountry="AU",dettaxtype,detkeyname="BJORN GLOBAL_M J A",detstdname,detfather,detresident,detpermit,detcitizen,detlanguage,companycode,countrycode="AU",accesslevel="delete",status="ok" GTR,N32W50E2R   T9485S91     1511 249F6YRO44I6 03:cbr="detlst",maxlines="1",sendfields="A",endoflist,status="ok"

Since I only need to limit my result set to a total of 100 repeatable accounts I can filter on another field if it can solve my problem.

As you can see from the above, this record has detcountry="AU", I tried the following queries based on that, but received the same failure result:

:cbr="detlst",maxlines=1,sendfields="S",filter01="detcountry:=:=AU"
:cbr="detlst",maxlines=1,sendfields="S",filter01="detcountry:=:AU"
:cbr="detlst",maxlines=1,sendfields="S",filter01="detcountry:EQ:AU"


I also tried detbirdate which is 1957-06-24 from the above user record and got a new error message as below:

:cbr="poslst",maxlines="1",sendfields="S",filter01="detbirdate:<=:=T:",
error01="BRE356:detbirdate: Field name not found. Check data dictionary.",status="fail"


Searching answer

Jake - the documentation suggests that equality is done this way:


detsurname:eq:Smith

Can you please try with "eq" being the equality operator in your query?

It gives a similar problem.


:cbr="detlst",maxlines="1",sendfields="S",filter01="detsurname:eq:Smith",
error01="BRE353:detsurname: No connector provided for filter.",status="fail"
Answer

As discovered with Jake, the "No connector provided for filter" is because a fourth operator to the filter is required, even if there is only one filter. The operator is AND or OR.


The Identity Broker for Frontier chris21 documentation will be updated to reflect this.


Thanks to Jake for working with us for an answer.

Thanks for the help, it seems that chris21 require the join field to be entered, like below where the : is appended to the filter. This seem to consistently return the same 100 records.

:cbr="detlst",maxlines=100,sendfields="S",filter01="detnumber:<:10100:"

Note that detnumber must be 5 digits.


I found that it works better to filter on the surname, the following filter worked well to get all accounts with a surname stating with an A (the filter seems case sensitive):

detsurname:=:A*: