crystal-reportscrystal-reports-2008crystal-reports-2010crystal-reports-8.5crystal-reports-server

How to generate a Crystal Report from a list of parameters


My requirement is to generate a employee details report of multiple employees.Parameters for query will be employee number and a date range.

This is the record selection formula i'm using

{EMP_LEAVE_REPORT_VIEW.LEAVE_START_DATE} in {?sDate} to {?eDate}

and
(
Stringvar Array strings := Split({?empNoList}, "_");

Numbervar Array numbers;
Redim numbers[Ubound(strings)];

Numbervar i;
for i := 1 to Ubound(strings) do (
numbers[i] := ToNumber(strings[i]);

if {EMP_LEAVE_REPORT_VIEW.EMP_NO} = numbers[i] then 
(true;)
else 
(false;)

);
)

First i'm checking for the date. Then i'm taking the employee list as a one string {?empNoList} eg: 5162_5468_5896_5236 and i'm splitting it to separate strings using "_" as the delimiter and assign those values again into a number array and using that value to filter the employee.

But this formula doesn't work.It gives the details of all the employees. Is this a problem of the way i converted the string array or is there something wrong in the for loop of my code?

I used this code and tried assigning one employee number to the {?empNoList} and it worked.

if (ToNumber({?empNoList}) = {EMP_LEAVE_REPORT_VIEW.EMP_NO}) then true else false

Please help me out with this.Thanks in advance!


Solution

  • I found the solution!

    Stringvar Array strings := Split({?empNoList}, "_"); //Spliting and saving the string in a string array
    Numbervar Array numbers;        //Creating a number array
    Redim numbers[Ubound(strings)]; //Declaring number array size
    Numbervar i;                       
    
    //For loop to traverse through string and convert each into numbers and saving them in the numbers array
    for i := 1 to Ubound(strings) do (      
        numbers[i] := ToNumber(strings[i]);
    );
    
    if({EMP_LEAVE_REPORT_VIEW.EMP_NO} in numbers)  //If condition to check whether Employee number is in the numbers array
    then
    (true;)
    else (false;)
    

    It was a simple out of the box thinking ;)