Print Page | Close Window

splitting comma saperated value in CR formula

Printed From: Crystal Reports Book
Category: Crystal Reports 9 through 2020
Forum Name: Report Design
Forum Discription: The best way to design a report and problems you have encountered
URL: http://www.crystalreportsbook.com/forum/forum_posts.asp?TID=7829
Printed Date: 04 May 2024 at 1:09am


Topic: splitting comma saperated value in CR formula
Posted By: joshimuralikris
Subject: splitting comma saperated value in CR formula
Date Posted: 29 Sep 2009 at 12:44am
Dear all,

in my crystal report i've a multiple choice Q & A, and the answer i'm saving as a string in a table i.e for my question if the user has checked 1,2 & 3 as answers i'm saving it as 1,2,3 and while retrieving i'm facing problem, i.e how to split the string in a formula and compare with specific values so that i can display check boxes in the crystal report.

in case of true or false i'm storing only true/false and after retrieving i'm comparing the fetched value with "true"/ "false" and displaying the result.

now i want to display multiple(true) checkbox options to the user in a crystal report

how can i fix this issue, please let me know...

Thanks in advance
Murali..



Replies:
Posted By: lockwelle
Date Posted: 29 Sep 2009 at 7:58am
I would use Split() function and place it in a array, then you can check the array. In the array you can set multiple shared variables that you can access to set the checkboxes.
 
HTH


Posted By: joshimuralikris
Date Posted: 29 Sep 2009 at 11:45pm
Thnks for your reply lockwelle..

i'm saving 1,2,3,4,5,6,7 as a string in database and i'm retrieving it and spliting it and creating a array with so many number of items.

Actually MyAddr array may contain a [1,2,3,4,5,6,7] or depending on the stored string.

here is the formula i'm trying to use

if{MQM_USP_PatientQIDataElementValuesForReport;1.DataElementId}="SCIP_63" then

 whileprintingrecords;
 Stringvar array MyAddr:=split({MQM_USP_PatientQIDataElementValuesForReport;1.DataElementValue},","); 
 Local NumberVar i := 1;
 Local NumberVar arrLen := UBound(MyAddr);

For i:=1 to arrLen do
(
if(MyAddr[1])="1" then
(
chr(254)
)else
chr(168)
);


inside for loop
if(MyAddr[1]) is working fine, but when ever i try to enter 2,3,4 i'm getting an error message saying
"A SUBSCRIPT MUST BE BETWEEN 1 AND SIZE OF ARRAY"


Posted By: lockwelle
Date Posted: 30 Sep 2009 at 6:11am
probably ought to change the code to:
if  MyAddr = "1" then
 
if you only have 1 member to the array, trying to access the 2nd will error out.
 
HTH


Posted By: joshimuralikris
Date Posted: 05 Oct 2009 at 5:10am
Dear lockwelle,

i'm using this formula to split the string and compare with a particular value, when i check the preview of the report, its displaying * kind of symbol, and not the expected value based on the condition, i.e either check checkbox or blank check box.

please correct where am i going wrong????

if{MQM_USP_PatientQIDataElementValuesForAMIReport;1.DataElementId}="SCIP_63" then
 whileprintingrecords;
 Stringvar array MyAddr:=split({MQM_USP_PatientQIDataElementValuesForAMIReport;1.DataElementValue},","); 
 Local NumberVar i := 1;
 Local NumberVar arrLen := UBound(MyAddr);
 arrLen := 6;
For i:=1 to arrLen do
(
if MyAddr="7" then(chr(254)
)
else
chr(168) 
);


Posted By: lockwelle
Date Posted: 05 Oct 2009 at 6:32am
well, then it the question is can / does CR support printing of the ascii code up that high?  That is all symbols, and perhaps, I don't know, CR doesn't support it as it has other capabilities for display.


Posted By: joshimuralikris
Date Posted: 05 Oct 2009 at 6:37am
nope crystal reports are printing the chr(254) & chr(168) perfectly, but i need to know, weather the logic i'm following in my formula to split and compare each and every individual element in an array with a constant is right or wrong? 


Posted By: lockwelle
Date Posted: 05 Oct 2009 at 7:22am
Ok, what if it is scip_63, but none of the myAddr are 7?  Also, shouldn't you be accessing an array member?  I don't think that MyAddr="7" cares about your variabe i.  I don't use arrays much, but shouldn't it be something like: MyAddr = "7"?
 
you might want to add the line at top chr(168);
 
that would default the formula to the value, and you can get rid of the else all together and just deal with the case of when SCIP_63 occurs.
 
HTH


Posted By: joshimuralikris
Date Posted: 06 Oct 2009 at 5:32am
Thanks for you response lockwelle ...

i've fixed the issue.. as i always doubted, the formula was going wrong.. i was returning a boolean previously, now i made it ri8 and returned a string every thing is working fine...

In case any one is facing such issue contact me



Print Page | Close Window