Crystal Reports 'if-statement' assistance

106 Views Asked by At

I'm currently using Crystal Reports 2013 to run reports. I'm having an issue with a formula that needs to look at an SAP order status and only print out a specific few. The SAP Order Status field is made up of 2 sections.

  • Section 1: 'A' 'B' 'C' 'D' (Only a single selection is pulled from this list)
  • Section 2: 'E' 'F' 'G' 'H' (This can have multiple selections within the Status)
  • Example Order #1111 Status: "A: F: G"

I currently have a formula that pulls the status of an order from the 1st Section.

if (isnull({user_status}) or 
    {user_status}=" " or
        not ({user_status} like ["*A*", "*B*", "*C*", "*D*"])) then "N/A" else
if {user_status} like "*A*" then "A" else
if {user_status} like "*B*" then "B" else
if {user_status} like "*C*" then "C" else
if {user_status} like "*D*" then "D"

The above snippet would only bring in "A" for Order #1111 and omit "F" & "G".

I need assistance with a formula that would omit "A" and list out both "F" & "G".

I've tried the following:

if (isnull({user_status}) or 
    {user_status}=" " or
        not ({user_status} like ["*E*", "*F*", "*G*", "*H*"])) then "N/A" else
if {user_status} like "*E*" then "E" else
if {user_status} like "*F*" then "F" else
if {user_status} like "*G*" then "G" else
if {user_status} like "*H*" then "H"

But that formula just returns the full "A; F; G" status.


Figured out the answer. (6/9/2020) I used the following code to create an array and loop through it pulling out only what I needed.

NumberVar Counter;
StringVar finalStatus:= "";
StringVar array statusList;
statusList:= split({user_status},";");
//Loop through array and only print out Status w/o No values
FOR Counter := 1 to UBound(statusList) DO
(if statusList[Counter] like ["E", "F", "G", "H"] then
finalStatus:= finalStatus+statusList[Counter]+";" else "");
finalStatus

Thanks for the input.

0

There are 0 best solutions below