Access the parameters in a report by
using the
DataDefinition.getParameterFields
method.
Fields<IParameterField> parameterFields = rcd.getDataDefController().getDataDefinition().getParameterFields();
IParameterField parameterField = (IParameterField)parameterFields.getField(0);
Make a copy of the parameter.
IParameterField newParameterField = (IParameterField) parameterField.clone(true);
newParameterField.getCurrentValues().removeAllElements();
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 = "Canada";
ParameterFieldDiscreteValue discreteValue = new ParameterFieldDiscreteValue();
discreteValue.setValue(discreteValueText);
newParameterField.getCurrentValues().add(discreteValue);
} Use the
ParameterFieldController.modify
method to modify the original parameter field based on the changes you have
made in the copy.
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) throws ReportSDKException
{
Fields<IParameterField> parameterFields = rcd.getDataDefController().getDataDefinition().getParameterFields();
IParameterField parameterField = (IParameterField)parameterFields.getField(0);
IParameterField newParameterField = (IParameterField) parameterField.clone(true);
newParameterField.getCurrentValues().removeAllElements();
ParameterValueRangeKind kind = parameterField.getValueRangeKind();
if (kind == ParameterValueRangeKind.discrete)
{
String discreteValueText = "Canada";
ParameterFieldDiscreteValue discreteValue = new ParameterFieldDiscreteValue();
discreteValue.setValue(discreteValueText);
newParameterField.getCurrentValues().add(discreteValue);
}
ParameterFieldController parameterFieldController = rcd.getDataDefController().getParameterFieldController();
parameterFieldController.modify(parameterField, newParameterField);
}This list includes the classes used by the sample
code:
com.crystaldecisions.sdk.occa.report.application.ParameterFieldController
com.crystaldecisions.sdk.occa.report.application.ReportClientDocument
com.crystaldecisions.sdk.occa.report.data.Fields
com.crystaldecisions.sdk.occa.report.data.IParameterField
com.crystaldecisions.sdk.occa.report.data.ParameterField
com.crystaldecisions.sdk.occa.report.data.ParameterValueRangeKind
com.crystaldecisions.sdk.occa.report.data.ParameterFieldDiscreteValue
com.crystaldecisions.sdk.occa.report.lib.ReportSDKException