I'd attempting to change the EvaluateCondition for a report's RunningTotal fields if the condition matches a certain value:
$path='C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet\iPoint' Add-Type -Path "$path\CrystalDecisions.CrystalReports.Engine.dll" Add-Type -Path "$path\CrystalDecisions.Shared.dll" $reportDocument = New-Object CrystalDecisions.CrystalReports.Engine.ReportDocument $path = "C:\users\<username>\desktop\report.rpt" # not sure if i should use $reportDocument.Load($path) # or this $reportDocument.ReportClientDocument.Open($path,0) $OldValue='foobar' $NewValue='foobarBAZ' $reportDocument.ReportClientDocument.DataDefinition.RunningTotalFields | % { if ($_.EvaluateCondition -like "*$OldValue*") { Write-Debug $_.Name # modify the formula $_.EvaluateCondition = $_.EvaluateCondition -replace $OldValue, $NewValue Write-Debug $_.EvaluateCondition } } $reportDocument.ReportClientDocument.Save() $reportDocument.ReportClientDocument.Close()
While the debug messages indicate that the EvaluateCondition was modified correctly, the changes aren't saved to the report (inspecting the running-total fields w/ Crystal Reports). Moreover, the Close() method doesn't seem to actually close the report.
What am I doing wrong?