SAP Knowledge Base Article - Public

2185298 - GroupAreaFormat.EnableKeepTogether & GroupAreaFormat.EnableSuppress always returns false.

Symptom

When querying the report for these two values GroupAreaFormat.EnableKeepTogether & GroupAreaFormat.EnableSuppress the CR for VS .NET SDK always returns false.

Environment

Crystal Reports for Visual Studio

Reproducing the Issue

Code to get values:

btnReportObjects.Text = "";
flcnt = 0;

foreach (CrystalDecisions.ReportAppServer.DataDefModel.Group resultField in rptClientDoc.DataDefController.DataDefinition.Groups)
{
    textBox1 = resultField.ConditionField.FormulaForm.ToString();
    btnReportObjects.Text += textBox1;
    btnReportObjects.AppendText(" 'End' \n");
    ++flcnt;
    btnCount.Text = flcnt.ToString();

    CrystalDecisions.CrystalReports.Engine.Areas areas = rpt.ReportDefinition.Areas;
    foreach (CrystalDecisions.CrystalReports.Engine.Area area in areas)
    {
    if (area.Kind == AreaSectionKind.GroupHeader)
    {
        CrystalDecisions.CrystalReports.Engine.GroupAreaFormat groupAreaFormat;
        groupAreaFormat = (CrystalDecisions.CrystalReports.Engine.GroupAreaFormat)area.AreaFormat;
        textBox1 = "EnableRepeatGroupHeader: " + groupAreaFormat.EnableRepeatGroupHeader.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableNewPageAfter: " + groupAreaFormat.EnableNewPageAfter.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableHideForDrillDown: " + groupAreaFormat.EnableHideForDrillDown.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableKeepGroupTogether: " + groupAreaFormat.EnableKeepGroupTogether.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableKeepTogether: " + groupAreaFormat.EnableKeepTogether.ToString(); // always returns false
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableNewPageBefore: " + groupAreaFormat.EnableNewPageBefore.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnablePrintAtBottomOfPage: " + groupAreaFormat.EnablePrintAtBottomOfPage.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableRepeatGroupHeader: " + groupAreaFormat.EnableRepeatGroupHeader.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableResetPageNumberAfter: " + groupAreaFormat.EnableResetPageNumberAfter.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "EnableSuppress: " + groupAreaFormat.EnableSuppress.ToString(); // always returns false
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n\n");

        CrystalDecisions.ReportAppServer.ReportDefModel.Area oldGHArea = (CrystalDecisions.ReportAppServer.ReportDefModel.Area)rptClientDoc.ReportDefController.ReportDefinition.get_GroupHeaderArea(0);
        CrystalDecisions.ReportAppServer.ReportDefModel.ISCRGroupAreaFormat grpAreaFormat = (CrystalDecisions.ReportAppServer.ReportDefModel.ISCRGroupAreaFormat)oldGHArea.Format;
        textBox1 = "KeepGroupTogether: " + grpAreaFormat.EnableKeepGroupTogether.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "VisibleGroupNumberPerPage: " + grpAreaFormat.VisibleGroupNumberPerPage.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n");
        textBox1 = "RepeatGroupHeader: " + grpAreaFormat.EnableRepeatGroupHeader.ToString();
        btnReportObjects.Text += textBox1;
        btnReportObjects.AppendText("\n 'End' \n");
        textBox1 = "";
...
}

Resolution

This is by design. To get the corelation between the Area and Section use code to evaluate the Group Section ID:

foreach (CrystalDecisions.ReportAppServer.ReportDefModel.Section crSect in CrArea.Sections)
{
    int sectionCodeArea = (crSect.SectionCode / 1000) % 1000; // Area
    int sectionCodeSection = (crSect.SectionCode % 1000); // zero based Section
    int sectionCodeGroup = (((crSect.SectionCode) / 25) % 40); // group section
    int sectionCodeGroupNo = (((crSect.SectionCode) % 25)); // group area

You can then determine the Group Section these properties belong to.

Keywords

CR for VS, .NET, GroupAreaFormat.EnableKeepTogether, GroupAreaFormat.EnableSuppress , KBA , BI-DEV-NET , BI Software Development Kits (SDKs) - .NET or Other , Problem

Product

SAP Crystal Reports, developer version for Microsoft Visual Studio