Focal Point
[SOLVED] 'CONTAINS' doesn't work in WHERE clause in MAINTAIN ?

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/5941003803

November 21, 2008, 11:01 PM
Charlz
[SOLVED] 'CONTAINS' doesn't work in WHERE clause in MAINTAIN ?
I can't get CONTAINS to work in MAINTAIN for some reason, although I've used it in Dev Studio with no problem. There is no error message.

For example, the table has has many rows in the TABLE where PROJECT = "ABC" but it does not find any partial matches, only complete matches, which is weird.

Examples:

The following code will NOT find any records that contain "ABC" in the PROJECT field :
--------------------------------------------------------------------------------------
Case LoadTransactions
-* KeyField is hardcoded for simplicity :
COMPUTE KeyField = 'B';

    Reposition moneytrack.MONEYTRK.RECORDID ;
    Stack clear TransStack ;

    IF KeyField EQ ''
 	  THEN For all next moneytrack.MONEYTRK.RECORDID into TransStack 
 	  ELSE For all next moneytrack.MONEYTRK.RECORDID into TransStack
        	      Where (PROJECT CONTAINS KeyField) ;

EndCase

--------------------------------------------------------------------------------------------

Do I need to concatenate wildcards onto the search string ?

The following code WILL find ALL rows that have PROJECT = "ABC" :
-----------------------------------------------------------------
Case LoadTransactions

COMPUTE KeyField = 'ABC';

    Reposition moneytrack.MONEYTRK.RECORDID ;
    Stack clear TransStack ;

    IF KeyField EQ ''
 	  THEN For all next moneytrack.MONEYTRK.RECORDID into TransStack 
 	  ELSE For all next moneytrack.MONEYTRK.RECORDID into TransStack
        	      Where (PROJECT CONTAINS KeyField) ;

EndCase

------------------------------------------------------------

I've tried with and without [COMPUTE] and it does not affect the results.
I've even tried "IS" and "LIKE" but CONTAINS seems like the perfect way to accomplish this.

The string cases also match although I would like to make not case sensitive, but that's after I get this working.

Ultimately, I'd like KeyField to work from a textbox, but I ned to get this working first.

Any clues, ideas or insights ?

Thanks in advance for anything that can help !
Charlie

This message has been edited. Last edited by: Kerry,


WF 7.6.4 & 5.3
Charles Lee
November 22, 2008, 05:07 AM
Alan B
Charles

Use a field declared as A0.

If KeyField is an A10 then the CONTAINS is looking for
'ABC       '
, whereas with A0 the field is trimmed to
'ABC'


DECLARE temp/a0 = KeyField
.
.
where (PROJECT contains temp);

As for case sensitivity, you may well have to do 2 retrievals as compound WHERE with OR clauses are not supported.


Alan.
WF 7.705/8.007
November 22, 2008, 04:28 PM
Charlz
I really appreciate elegant solutions, and I'll add you to my list.

Worked like a charm !

Thanks
Charlie


WF 7.6.4 & 5.3
Charles Lee
November 26, 2008, 12:18 PM
Charlz
Thank you to whomever changed the title of my post to say that is has been "[SOLVED]"

I wanted to mark it myself, but could you please tell me how to do this ?

Here is the page I see whan I try to edit the post to change the heading / title :

http://www.yourbuyersinn.com/FocusForumostSOLVED.JPG

Thanks again to Alan B for the solution !

Charlie

This message has been edited. Last edited by: Charlz,


WF 7.6.4 & 5.3
Charles Lee