Skip to Content
0
Dec 19, 2017 at 04:57 PM

Modify a RunningTotal field's EvaluateCondition using the CR .Net SDK

86 Views Last edit Jan 30, 2018 at 04:34 PM 2 rev

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?