Print Page | Close Window

Multiple values question

Printed From: Crystal Reports Book
Category: Crystal Reports 9 through 2020
Forum Name: Tips and Tricks
Forum Discription: Have you learned some great tricks to share with the group? Post them here!
URL: http://www.crystalreportsbook.com/forum/forum_posts.asp?TID=21673
Printed Date: 25 Apr 2024 at 5:16pm


Topic: Multiple values question
Posted By: pkfox
Subject: Multiple values question
Date Posted: 07 Sep 2015 at 8:53pm
Hi all ,If I have a multiple value parameter in my report ( I have several of them ) what is the preferred method of filtering the output using the array ? I'm a bit confused having read about Join and Split et al

TIA


-------------
We can't stop here, this is bat country. Hunter S Thompson RIP.



Replies:
Posted By: hilfy
Date Posted: 08 Sep 2015 at 9:35am
You don't have to do anything to it. In the Select Expert, select the field you want to match to, then "is in", then the parameter. Crystal will handle the rest.

-Dell

-------------
Proviti, Data & Analytics Practice
http://www.protiviti.com/US-en/data-management-advanced-analytics - www.protiviti.com/US-en/data-management-advanced-analytics


Posted By: pkfox
Date Posted: 08 Sep 2015 at 7:18pm
Originally posted by hilfy

You don't have to do anything to it. In the Select Expert, select the field you want to match to, then "is in", then the parameter. Crystal will handle the rest.

-Dell


Hi and thanks for replying but I need to know how to do it in code as it's not as simple as just filtering on a record level - I think I can achieve it by using join and split though


-------------
We can't stop here, this is bat country. Hunter S Thompson RIP.


Posted By: hilfy
Date Posted: 09 Sep 2015 at 4:00am
Ok, for a multi-value parameter you need to create one ReportParameter.SingleValue for each value in the multi-select list and add each of them to the parameter. Here's some sample code that I found:

if(boReportObjects.Count > 0)
{
    boReportObject = boReportObjects[1];
    boReport = (Report)boReportObject;
    //Grab the parameters off of the report object
    boParameters = boReport.ReportParameters;
    //Loop through all parameters, checking for parameter type
    foreach(ReportParameter boParameter in boParameters)
    {
        if(boParameter.SupportsRangeValues == true)
        {
            //set the Range parameter value
            //in this case we are doing a number range
            boParamValue = boParameter.CreateRangeValue();
            boParamValue.RangeValue.FromValue.Value="10";
            boParamValue.RangeValue.ToValue.Value = "20";
            //set whether boundries are inclusive or exclusive
            //of the range values
            boParamValue.RangeValue.IncludesLowerBound = true;
            boParamValue.RangeValue.IncludesUpperBound = true;
            boParameter.CurrentValues.Add(boParamValue);
        }
        else
        {
            switch(boParameter.ValueType)
            {
               case CeReportVariableValueType.ceRVBoolean:
                 boParamValue = boParameter.CreateSingleValue();
                 boParamValue.SingleValue.Value = "true";
                 boParameter.CurrentValues.Add(boParamValue);
                 break;
               case CeReportVariableValueType.ceRVCurrency:
                  boParamValue = boParameter.CreateSingleValue();
                  boParamValue.SingleValue.Value = "33333";
                  boParameter.CurrentValues.Add(boParamValue);
                  break;
              case CeReportVariableValueType.ceRVDate:
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "Date(2005,08,19)";
               boParameter.CurrentValues.Add(boParamValue);
               break;
              case CeReportVariableValueType.ceRVDateTime:
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "DateTime(2003,8,6,0,0,0)";
               boParameter.CurrentValues.Add(boParamValue);
               break;
              case CeReportVariableValueType.ceRVNumber:
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "10524";
               boParameter.CurrentValues.Add(boParamValue);
               break;
              case CeReportVariableValueType.ceRVString:
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "USA";
               boParameter.CurrentValues.Add(boParamValue);
               //this parameter can accept multiple values
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "Canada";
               boParameter.CurrentValues.Add(boParamValue);
               break;
              case CeReportVariableValueType.ceRVTime:
               boParamValue = boParameter.CreateSingleValue();
               boParamValue.SingleValue.Value = "Time(12,15,15)";
               boParameter.CurrentValues.Add(boParamValue);
               break;
          }
      }
}


-Dell

-------------
Proviti, Data & Analytics Practice
http://www.protiviti.com/US-en/data-management-advanced-analytics - www.protiviti.com/US-en/data-management-advanced-analytics



Print Page | Close Window