cancel
Showing results for 
Search instead for 
Did you mean: 

Cryatal Reports for Visual Studio change on second sureport not saved

filippo_menditto
Participant
0 Kudos

Hi, I have a program che cycle on all subrerports of a reports and make some changes on a fields. After I save the report but only changes on first subrport are saved. The program is like follow code. The function : CheckFieldMapping remove some fields with report.ReportDefController.ReportObjectController.Remove(rptObject).

report = New CrystalDecisions.CrystalReports.Engine.ReportDocument

report.Load(strFile, CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)

Dim rdc As ISCDReportClientDocument

rdc = report.ReportClientDocument

For Each subReportName As String In subReportNames

Dim subrptObj As SubreportClientDocument

subrptObj = dc.SubreportController.GetSubreport(subReportName)

CheckFieldMapping(rdc.DisplayName, CType(subrptObj, ISCRSubreportClientDocument)) subrptObj = Nothing

Next

subReportNames.RemoveAll()

rdc.Save()

report.SaveAs(strFile, False) rdc.Close() rdc = Nothing

Same idea ?

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Hi Filippo,

Try saving the report after each subreport change and then compare output in CR Designer.

Or open the subreport rather than just loading it into memory...

Something like this:

foreach (CrystalDecisions.CrystalReports.Engine.Section section in rpt.ReportDefinition.Sections)
{
foreach (CrystalDecisions.CrystalReports.Engine.ReportObject reportObject in section.ReportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
CrystalDecisions.CrystalReports.Engine.SubreportObject subReport = (CrystalDecisions.CrystalReports.Engine.SubreportObject)reportObject;

CrystalDecisions.CrystalReports.Engine.ReportDocument subDocument = subReport.OpenSubreport(subReport.SubreportName);

.... your code


subDocument.SetDataSource(ds);
}
}
}

Don

Answers (0)