Technical Questions
 Crystal Reports Forum : Crystal Reports 9 through 2022 : Technical Questions
Message Icon Topic: Multiple variables in One formula not saving Post Reply Post New Topic
Author Message
tonkamedic
Newbie
Newbie
Avatar

Joined: 30 Nov 2011
Location: United States
Online Status: Offline
Posts: 5
Quote tonkamedic Replybullet Topic: Multiple variables in One formula not saving
     Posted: 08 May 2012 at 12:04pm
I am working on a clinical report for an Operating Room. I am trying to have the report decipher between day of week and time of day, then save the "total minutes" for that line to the correct variable. I have tried using If statements and Case statements. The only time I can get it to work is when I only evaluate 1 variable at a time per formula. Why is this? Is there a setting I need to adjust or another way to approach this? Otherwise I would have to create over 2500 formulas to get my data to save appropriately.

Below is a sample of the code that I have so far....

//RR OR 01 0730 to 1500hrs
Shared NumberVar RR01_1_M; Shared NumberVar RR01_1_T; Shared NumberVar RR01_1_W; Shared NumberVar RR01_1_R; Shared NumberVar RR01_1_F; Shared NumberVar RR01_1_S; Shared NumberVar RR01_1_U;
//RR OR 01 1501 to 1700hrs
Shared NumberVar RR01_2_M; Shared NumberVar RR01_2_T; Shared NumberVar RR01_2_W; Shared NumberVar RR01_2_R; Shared NumberVar RR01_2_F; Shared NumberVar RR01_2_S; Shared NumberVar RR01_2_U;
//RR OR 01 1701 to 1900hrs
Shared NumberVar RR01_3_M; Shared NumberVar RR01_3_T; Shared NumberVar RR01_3_W; Shared NumberVar RR01_3_R; Shared NumberVar RR01_3_F; Shared NumberVar RR01_3_S; Shared NumberVar RR01_3_U;
//RR OR 01 1901 to 2100hrs
Shared NumberVar RR01_4_M; Shared NumberVar RR01_4_T; Shared NumberVar RR01_4_W; Shared NumberVar RR01_4_R; Shared NumberVar RR01_4_F; Shared NumberVar RR01_4_S; Shared NumberVar RR01_4_U;
// RR OR 01 2101 to 0729hrs
Shared NumberVar RR01_5_M; Shared NumberVar RR01_5_T; Shared NumberVar RR01_5_W; Shared NumberVar RR01_5_R; Shared NumberVar RR01_5_F; Shared NumberVar RR01_5_S; Shared NumberVar RR01_5_U;

WHILEPRINTINGRECORDS;

SELECT {@TIMEFRAME}
//SAVES DATA FOR EVENTS OCCURING ON SUNDAY IN ALL 5 TIMEFRAMES
CASE "U1":
    IF {@MINOFDAY} < 30 THEN RR01_5_U := RR01_5_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_U := RR01_1_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "U2":
    RR01_2_U := RR01_2_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "U3":
    RR01_3_U := RR01_3_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "U4":
    RR01_4_U := RR01_4_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "U5":
    RR01_5_U := RR01_3_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON MONDAY FOR ALL 5 TIMEFRAMES
CASE "M1":
    IF {@MINOFDAY} < 30 THEN RR01_5_M := RR01_5_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_M := RR01_1_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "M2":
    RR01_2_M := RR01_2_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "M3":
    RR01_3_M := RR01_3_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "M4":
    RR01_4_M := RR01_4_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "M5":
    RR01_5_M := RR01_3_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON TUESDAY FOR ALL 5 TIMEFRAMES
CASE "T1":
    IF {@MINOFDAY} < 30 THEN RR01_5_T := RR01_5_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_T := RR01_1_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "T2":
    RR01_2_T := RR01_2_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "T3":
    RR01_3_T := RR01_3_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "T4":
    RR01_4_T := RR01_4_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "T5":
    RR01_5_T := RR01_3_T + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON WEDNESDAY FOR ALL 5 TIMEFRAMES
CASE "W1":
    IF {@MINOFDAY} < 30 THEN RR01_5_W := RR01_5_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_W := RR01_1_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "W2":
    RR01_2_W := RR01_2_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "W3":
    RR01_3_W := RR01_3_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "W4":
    RR01_4_W := RR01_4_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "W5":
    RR01_5_W := RR01_3_W + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON THURSDAY FOR ALL 5 TIMEFRAMES
CASE "R1":
    IF {@MINOFDAY} < 30 THEN RR01_5_R := RR01_5_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_R := RR01_1_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "R2":
    RR01_2_R := RR01_2_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "R3":
    RR01_3_R := RR01_3_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "R4":
    RR01_4_R := RR01_4_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "R5":
    RR01_5_R := RR01_3_R + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON FRIDAY FOR ALL 5 TIMEFRAMES
CASE "F1":
    IF {@MINOFDAY} < 30 THEN RR01_5_F := RR01_5_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_F := RR01_1_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "F2":
    RR01_2_T := RR01_2_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "F3":
    RR01_3_T := RR01_3_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "F4":
    RR01_4_T := RR01_4_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "F5":
    RR01_5_T := RR01_3_F + {V_SURGERY.PAT_ROOM_DIFF_MIN}
//SAVES DATA FOR EVENTS OCCURING ON TUESDAY FOR ALL 5 TIMEFRAMES
CASE "S1":
    IF {@MINOFDAY} < 30 THEN RR01_5_S := RR01_5_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
    ELSE IF {@MINOFDAY} > 29 THEN RR01_1_S := RR01_1_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "S2":
    RR01_2_S := RR01_2_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "S3":
    RR01_3_S := RR01_3_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "S4":
    RR01_4_S := RR01_4_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
CASE "S5":
    RR01_5_S := RR01_3_S + {V_SURGERY.PAT_ROOM_DIFF_MIN}
DEFAULT:
0



IP IP Logged
LynnB
Newbie
Newbie


Joined: 08 May 2012
Online Status: Offline
Posts: 15
Quote LynnB Replybullet Posted: 09 May 2012 at 12:33pm
Hi,
Do you need to cater for NULL fields?

Try this:

if not(isnull( {@MINOFDAY} )) and not(isnull( {@TIMEFRAME} ) then
  if  {@TIMEFRAME} ="U1" then
      if {@MINOFDAY} < 30 THEN
       RR01_5_U := RR01_5_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}    
      else if {@MINOFDAY} > 29 then
       RR01_1_U := RR01_1_U + {V_SURGERY.PAT_ROOM_DIFF_MIN}

else if …….

 else if {@TIMEFRAME} ="U5" then

  RR01_5_U := RR01_5_U + {V_SURGERY.PAT_ROOM_DIFF_MIN};

 if not(isnull( {@MINOFDAY} )) and not(isnull( {@TIMEFRAME} ) then
  if  {@TIMEFRAME} ="M1" then
      if {@MINOFDAY} < 30 THEN
       RR01_5_U := RR01_5_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}    
      else if {@MINOFDAY} > 29 then
       RR01_1_U := RR01_1_M + {V_SURGERY.PAT_ROOM_DIFF_MIN}

else if …….

 else if {@TIMEFRAME} ="M5" then

  RR01_5_U := RR01_5_M + {V_SURGERY.PAT_ROOM_DIFF_MIN};

Ect…


IP IP Logged
tonkamedic
Newbie
Newbie
Avatar

Joined: 30 Nov 2011
Location: United States
Online Status: Offline
Posts: 5
Quote tonkamedic Replybullet Posted: 09 May 2012 at 12:41pm
All fields have values assigned. All the formulas show a value on the report. All the variables are assigned 0 (zero) when initially declared in the report header.

Thanks for the feedback!
IP IP Logged
tonkamedic
Newbie
Newbie
Avatar

Joined: 30 Nov 2011
Location: United States
Online Status: Offline
Posts: 5
Quote tonkamedic Replybullet Posted: 09 May 2012 at 12:55pm
The formula above shows the correct number in the details section of the report. It just doesn't appear to be saving the data to the variable.
IP IP Logged
LynnB
Newbie
Newbie


Joined: 08 May 2012
Online Status: Offline
Posts: 15
Quote LynnB Replybullet Posted: 09 May 2012 at 1:27pm
Arrrr, see, than my only other suggestion is to check where the formular is being initialised. 
IP IP Logged
Printable version Printable version

Forum Jump
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot delete your posts in this forum
You cannot edit your posts in this forum
You cannot create polls in this forum
You cannot vote in polls in this forum