on 09-03-2013 8:30 PM
I'm using Crystal Reports version 14
Report has one grouping (Facility), details sections lists line items to price. Price is based on a count of type of line item, once there are so many of certain types, the price changes (using access database for price table). When I add to my pricing formula If statedments if the tye of count is <= 50... etc., I get the Print Time Foruma Error. Everything works fine, until I try to price based on the counters. The pricing formula is what I'm trying to modify.
Please Help.
Counters Forumula:
shared numbervar XRCounter;
shared numbervar CTCounter;
shared numbervar MRCounter;
shared numbervar NMCounter;
shared numbervar USCounter;
shared numbervar LNCounter := 0;
if {RPTPATIENTSTUDY.SCHEDULEDMODALITY} in ["CR", "DX", "XR", "RG", "XA"] then
(if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY2" then
(XRCounter := XRCounter + 2;
LNCounter := 2)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY3" then
(XRCounter := XRCounter + 3;
LNCounter := 3)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY4" then
(XRCounter := XRCounter + 4;
LNCounter := 4)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY5" then
(XRCounter := XRCounter + 5;
LNCounter := 5)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY6" then
(XRCounter := XRCounter + 6;
LNCounter := 6)
else
(XRCounter := XRCounter + 1;
LNCounter := 1))
else
if {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "CT" then
(if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "ABD/PELVIS" then
(CTCounter := CTCounter + 2;
LNCounter := 2)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+1CT" then
(CTCounter := CTCounter + 3;
LNCounter := 3)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+2CT" then
(CTCounter := CTCounter + 4;
LNCounter := 4)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+3CT" then
(CTCounter := CTCounter + 5;
LNCounter := 5)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT2" then
(CTCounter := CTCounter + 2;
LNCounter := 2)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT3" then
(CTCounter := CTCounter + 3;
LNCounter := 3)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT4" then
(CTCounter := CTCounter + 4;
LNCounter := 4)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT5" then
(CTCounter := CTCounter + 5;
LNCounter := 5)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT6" then
(CTCounter := CTCounter + 6;
LNCounter := 6)
else
(CTCounter := CTCounter + 1;
LNCounter :=1))
else
if {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "US" then
(if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US2" then
(USCounter := USCounter + 2;
LNCounter := 2)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US3" then
(USCounter := USCounter + 3;
LNCounter := 3)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US4" then
(USCounter := USCounter + 4;
LNCounter := 4)
else
(USCounter := USCounter + 1;
LNCounter := 1))
else
if {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "MR" then
(if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR2" then
(MRCounter := MRCounter + 2;
LNCounter := 2)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR3" then
(MRCounter := MRCounter + 3;
LNCounter := 3)
else if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR4" then
(MRCounter := MRCounter + 4;
LNCounter := 4)
else
(MRCounter := MRCounter + 1;
LNCounter :=1))
else
if {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "NM" then
(if {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "NM2" then
(NMCounter := NMCounter + 2;
LNCounter := 2)
else
(NMCounter := NMCounter + 1;
LNCounter :=1))
Price Foruma (version that works before adding if a counter is greater than or less than.....)
IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} in ["CR", "DX", "XR", "RG", "XA"] THEN
(IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY2" THEN {Pricing.XR 2}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY3" THEN {Pricing.XR 3}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY4" THEN {Pricing.XR 4}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY5" THEN {Pricing.XR 5}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "XRAY6" THEN {Pricing.XR 6}
ELSE {Pricing.XR 1})
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "CT" THEN
(IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "ABD/PELVIS" THEN {Pricing.CT AB/PEL}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT-LTD" THEN {Pricing.CT LTD}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+1CT" THEN {Pricing.CT M+1}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+2CT" THEN {Pricing.CT M+2}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MULTI+3CT" THEN {Pricing.CT M+3}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT2" THEN {Pricing.CT 2}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT3" THEN {Pricing.CT 3}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT4" THEN {Pricing.CT 4}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT5" THEN {Pricing.CT 5}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CT6" THEN {Pricing.CT 6}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "CCTA" THEN {Pricing.CT CCTA}
ELSE {Pricing.CT 1})
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "US" THEN
(IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US2" THEN {Pricing.US 2}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US3" THEN {Pricing.US 3}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "US4" THEN {Pricing.US 4}
ELSE {Pricing.US 1})
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "MR" THEN
(IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR2" THEN {Pricing.MR 2}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR3" THEN {Pricing.MR 3}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "MR4" THEN {Pricing.MR 4}
ELSE {Pricing.MR 1})
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "PT" THEN {Pricing.PT}
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY} = "NM" THEN
(IF {RPTPATIENTSTUDY.SCHEDULEDBODYPARTEXAMINED} = "NM2" THEN {Pricing.NM 2}
ELSE {Pricing.NM 1})
ELSE IF {RPTPATIENTSTUDY.SCHEDULEDMODALITY}= "MG" THEN {Pricing.MG 1}
ELSE $0.00
Hi Mike,
The very first line of your formula add:
WhilePrintingRecords;
This will set have Crystal evaluate the report on it's second pass of the database which is when Running Totals should be calculated.
Unless you are getting parameters from a subreport, you do not need a Shared variable. Just remove Shared where you are defining the variable. Really won't make a difference in the calculation but it will in the overhead for resources.
Good luck,
Brian
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I added the whileprintingrecords command to my Counters formula and tried to add the new If statements to the Price formula and got the same error. I then removed the new if statements from the Price formula and added the wileprintingrecords command to the Price formula, and immediatly received the Running total error.
I've added whileprintingrecords to Counters alone, and to Counters and Price - same problem.
User | Count |
---|---|
86 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.