?
Solved

Formula to concatenate multiple boolean fields with a delimiter

Posted on 2016-09-12
4
Medium Priority
?
110 Views
Last Modified: 2016-09-14
Gurus,

I need a formula to concatenate and separate 6 Boolean fields together where one or more may be true.

For instance, Field 1 may be True or False.  If True then "Field 1" else ""

I need the formula output result to be:
Field 1
or
Field 2
or
Field 1, Field 2
or
Field 2, Field 4

etc, etc.  I'm adding a comma to separate the values for readability.

Here's the formula I'm using that's close but it's adding a "comma" after conditions where only one field is True


Local StringVar strOut;

if Not(isnull({CONTACT.Automation})) AND {CONTACT.Automation} = True then
    strOut := "RA" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Hardfacing} = True then
    strOut := strOut + "RH" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Industrial} = True then
    strOut := strOut + "IND" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.PMA} = True then
    strOut := strOut + "PMA" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Tactical} = True then
    strOut := strOut + "TAC" & ", ";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Underwater} = True then
    strOut := strOut + "UW" & ", ";
Mid(strOut,1)


What am I missing?  Thanks in advance!!
0
Comment
Question by:SStroz
  • 2
4 Comments
 
LVL 101

Expert Comment

by:mlmcc
ID: 41795125
You could change the last line to

Left(strOut, Length(strOut)-1)

or

Mid(strOut, 1, Length(strOut)-1)


mlmcc
0
 
LVL 35

Accepted Solution

by:
James0628 earned 2000 total points
ID: 41795770
Another option is to put the comma in front of each value, and then use Mid to exclude the first comma from the output.

Local StringVar strOut;

if Not(isnull({CONTACT.Automation})) AND {CONTACT.Automation} = True then
    strOut :=  ", " + "RA";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Hardfacing} = True then
    strOut := strOut + ", " + "RH";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Industrial} = True then
    strOut := strOut + ", " + "IND";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.PMA} = True then
    strOut := strOut + ", " + "PMA";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Tactical} = True then
    strOut := strOut + ", " + "TAC";
if Not(isnull({CONTACT.Automation})) AND {CONTACT.Underwater} = True then
    strOut := strOut + ", " + "UW";

if Length (strOut) > 2 then
  Mid(strOut,3)
else
  strOut

Open in new window


 James
0
 
LVL 7

Author Comment

by:SStroz
ID: 41797121
mlmcc, your formula gave me this error:

String length is less than 0 or not an integer


I used James solution for this one.


Many thanks to both of you!!!
0
 
LVL 35

Expert Comment

by:James0628
ID: 41797609
You're welcome.

 FWIW, the error on mlmcc's formula was probably from records where none of your conditions were true, so you ended up with an empty string.  Then Length (strOut) - 1 would give you -1, which would give you that error.

 You could handle that using

if Length (strOut) > 1 then
  Left(strOut, Length(strOut)-1)

  or

if Length (strOut) > 1 then
  Mid(strOut, 1, Length(strOut)-1)


 James
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Crystal Reports: 5 Tests for Top Performance It is complete, your masterpiece report.  Not only does it meet your customer’s expectations, it blows them out the water, all they want is beautifully summarised and displayed in a myriad of ways. …
Hot fix for .Net Crystal Reports 10.2.3600.0 to fix problems with sub reports running on 64 bit operating systems ISSUE: Reports which contain subreports fail with error "Missing Parameter Value" DEPLOYMENT SERVER OS: Windows 2008 with 64 bi…
Screencast - Getting to Know the Pipeline
Whether it be Exchange Server Crash Issues, Dirty Shutdown Errors or Failed to mount error, Stellar Phoenix Mailbox Exchange Recovery has always got your back. With the help of its easy to understand user interface and 3 simple steps recovery proced…
Suggested Courses

850 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question