Symptom
- How to add sort field through using RAS .NET?
Environment
- Crystal Reports 2008
- BOE 3.1
- .NET Framework 2.0
Resolution
- The snippet code below in c#, demonstrates how to add sort field using RAS .NET:
Fields resultFields = dataDefController.DataDefinition.ResultFields;
Field sortField = (Field)resultFields.FindField("<fieldName>", CrFieldDisplayNameTypeEnum.crFieldDisplayNameLong, CeLocale.ceLocaleEnglishUS);
SortController sortController = dataDefController.SortController
if (sortController.CanSortOn(sortField))
{
Sort newSort = new SortClass();
newSort.SortField = sortField;
newSort.Direction = CrSortDirectionEnum.crSortDirectionAscendingOrder;
sortController.Add(3, newSort);
}
For more information about the SDK, refer to:
- Developer Guide:
http://help.sap.com/businessobject/product_guides/boexir31/en/rassdk_net_dg_12_en.chm
- API Reference
http://help.sap.com/businessobject/product_guides/boexir31/en/rassdk_net_apiRef_12_en.chm
For Crystal Reports Developer for .NET ( version 13 and 14 runtime ) you can also add a formula sort on string or field using the following:
CrystalDecisions.ReportAppServer.ObjectFactory.ObjectFactory objFactory = new CrystalDecisions.ReportAppServer.ObjectFactory.ObjectFactory();
CrystalDecisions.ReportAppServer.DataDefModel.FormulaField Formula = (CrystalDecisions.ReportAppServer.DataDefModel.FormulaField)objFactory.CreateObject("CrystalReports.FormulaField");
// crFieldValueTypeStringField must nmatch type
Formula.Type = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeStringField;
Formula.Syntax = CrystalDecisions.ReportAppServer.DataDefModel.CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;
// NOTE: if the formula is a string only then you must add whilereadingrecords to the formula text so CR can detect it's a valid formula.
Formula.Text = @"whilereadingrecords; ""A""";
Formula.Name = "TestDon";
//Verify the text is valid
String FormulaMessage = rptClientDoc.DataDefController.FormulaFieldController.Check(Formula);
if (FormulaMessage == null)
rptClientDoc.DataDefController.FormulaFieldController.Add(Formula);
else
btnReportObjects.Text += "There are errors in the formula: " + FormulaMessage.ToString() + "\n";
Note: No Sort is achived by not adding the field/formula to the sort object list. If you want to change to no sort then remove the field/formula from the collection.
To validate if a formula can be sorted on this will confirm it if IsRecurring returns false:
if (rptClientDoc.DataDefController.SortController.CanSortOn(RASSortField.SortField))
{
MessageBox.Show("true " + RASSortField.SortField.IsRecurring.ToString());
}
else
MessageBox.Show("False " + RASSortField.SortField.IsRecurring.ToString());
Keywords
Add sort field in .NET; sort field in .NET; sort field; .NET , KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , BI-DEV , Business Intelligence Software Development Kits (SDKs) , Problem