Skip to Content
0
Former Member
May 31, 2011 at 05:17 AM

ISCRParameterField Setcurrentvalues method does not retain paramatervalues

49 Views

Hi,

i am trying to multiple parameters fields (not multiple values). when i setcurrentvalues for second parameterfield the currentvalues for the first one gets lost. i found this from parameter panel in crystal report viewer. when i click edit parameter values in assigned list no values shown for first parameter field. sometimes displays "No error" alert.

My Code:

private void AddParameter(string fieldName, int parId)

{

string sParamName = "", sParamFieldName = "";

int colInd;

colInd = 0;

ISCRParameterField newParameterField = new ParameterFieldClass();

if (fieldName == "SUITENAME")

{

sParamName = "SuiteName";

sParamFieldName = "@default";

colInd = 4;

}

else if (fieldName == "GROUP1NAME")

{

sParamName = "Region";

sParamFieldName = "CSP_PROCESS_REPORT.GROUP1NAME";

colInd = 5;

}

else if (fieldName == "GROUP2NAME")

{

sParamName = "Group";

sParamFieldName = "CSP_PROCESS_REPORT.GROUP2NAME";

colInd = 6;

}

newParameterField.ParameterType = CrParameterFieldTypeEnum.crParameterFieldTypeReportParameter;

newParameterField.Name = sParamName;

newParameterField.ReportName = "";

newParameterField.Type = CrFieldValueTypeEnum.crFieldValueTypeStringField;

newParameterField.AllowMultiValue = true;

newParameterField.AllowCustomCurrentValues = true;

ISCRField existingParameterField;

string tmp = String.Empty;

RowsetMetaData rowsetMetaData = new RowsetMetaDataClass();

Fields fields = new FieldsClass();

ArrayList defaultValues = new ArrayList();

fields.Add(rcDoc.DataDefController.DataDefinition.ResultFields[colInd]);

rowsetMetaData.DataFields = (CrystalDecisions.ReportAppServer.DataDefModel.Fields)fields;

RowsetController rowsetController = rcDoc.RowsetController;

rowsetController.RowsetBatchSize = 10;

RowsetCursor rowsetCursor = rowsetController.CreateCursor(null, rowsetMetaData, 0);

do

{

Record record = rowsetCursor.CurrentRecord;

Record record1 = rowsetCursor.CurrentRecord;

if (!defaultValues.Contains((record[0] == null ? "" : record[0].ToString())))

{

defaultValues.Add((record[0] == null ? "" : record[0].ToString()));

newParameterField.DefaultValues.Add((record[0] == null ? "" : record[0].ToString()));

}

} while (rowsetCursor.MoveNext());

newParameterField.Usage = (int)CrParameterFieldUsageEnum.crParameterFieldUsageInUse;

newParameterField.IsEditableOnPanel = true;

newParameterField.IsShownOnPanel = true;

rcDoc.DataDefController.ParameterFieldController.Add((CrystalDecisions.ReportAppServer.DataDefModel.ParameterField)newParameterField);

rcDoc.DataDefController.SavedDataFilterController.SetFormulaText("{" + sParamFieldName + "} = {?" + sParamName + "}");

for (int x = 1; x < defaultValues.Count - 1; x++)

{

newParameterField.CurrentValues.Add(defaultValues[x].ToString());

rcDoc.DataDefController.ParameterFieldController.SetCurrentValues("", sParamName, newParameterField.CurrentValues);

}

}

Please Help me to retain Paramatervalues for multipleparams.

Regards,

Padmanaban V