Crystal Reports for Eclipse Developer Guide

To modify a parameter field

  1. Access the parameters in a report by using the DataDefinition.getParameterFieldsmethod.
       Fields parameterFields = rcd.getDataDefController().getDataDefinition().getParameterFields();
       ParameterField parameterField = (ParameterField)parameterFields.getField(0);
    
  2. Make a copy of the parameter.
       ParameterField newParameterField = new ParameterField();
       parameterField.copyTo(newParameterField, true);
       newParameterField.getCurrentValues().removeAllElements();
    
  3. Determine the type of parameter value then modify the parameter.
    The following code modifies the parameter if it is discrete.
       ParameterValueRangeKind kind = parameterField.getValueRangeKind();
          
       if (kind == ParameterValueRangeKind.discrete)
       {
           String discreteValueText = "New Parameter Value";
    			    ParameterFieldDiscreteValue discreteValue = new ParameterFieldDiscreteValue();
           discreteValue.setValue(discreteValueText);
           newParameterField.getCurrentValues().add(discreteValue);
       }
    
  4. Use the ParameterFieldController.modify method to modify the original parameter field based on the changes you have made in the copy.
       ParameterFieldController parameterFieldController;
       parameterFieldController =	rcd.getDataDefController().getParameterFieldController();
       parameterFieldController.modify(parameterField, newParameterField);
    
Example: 
The following code gets the first parameter in the report and changes the default value of a discrete parameter:
void modifyParameterField(ReportClientDocument rcd)
{
   Fields parameterFields = rcd.getDataDefController().getDataDefinition().getParameterFields();
   ParameterField parameterField = (ParameterField)parameterFields.getField(0);
   ParameterField newParameterField = new ParameterField();
   parameterField.copyTo(newParameterField, true);
   newParameterField.getCurrentValues().removeAllElements();

   ParameterValueRangeKind kind = parameterField.getValueRangeKind();
      
   if (kind == ParameterValueRangeKind.discrete)
   {
       String discreteValueText = "New Parameter Value";
			    ParameterFieldDiscreteValue discreteValue = new ParameterFieldDiscreteValue();
       discreteValue.setValue(discreteValueText);
       newParameterField.getCurrentValues().add(discreteValue);
   }
   
   ParameterFieldController parameterFieldController;
   parameterFieldController =	rcd.getDataDefController().getParameterFieldController();
   parameterFieldController.modify(parameterField, newParameterField); 
}   



SAP BusinessObjects
http://www.sap.com/sapbusinessobjects/
Support services
http://service.sap.com/bosap-support/
Product Documentation on the Web
http://help.sap.com/