使用 CRAXDRT 循环访问 Crystal Sub 报告



我正在尝试在 C#2010 中使用 CRAXDDRT 循环访问水晶子报告,但我遇到了一个问题。我发现很多看起来像这样的 VB6 代码......

Dim crxDatabaseTables As CRAXDRT.DatabaseTables
Dim crxDatabaseTable As CRAXDRT.DatabaseTable
Dim crxSections As CRAXDRT.Sections
Dim crxSection As CRAXDRT.Section
Dim CRXReportObject As Object
For Each crxSection In crxSections
    For Each CRXReportObject In crxSection.ReportObjects
       If CRXReportObject.Kind = crSubreportObject Then
           ' loop code here
       End If
    Next
Next

虽然这在 VB6 中看起来和工作得很好,但这在 c# 中不起作用,因为 CRXReportObject 是一个对象,所以这一行......

 If CRXReportObject.Kind = crSubreportObject Then

。不会工作,因为"种类"不是对象上的方法。有人有任何建议来解决这个问题吗?在有人建议不使用 Crystal Report ActiveX 对象之前,我们不能。我们被困住了...这是到目前为止的代码...

foreach (CRAXDDRT.Section section in crystalReport.Sections)
{
    foreach (object item in section.ReportObjects)
    {
        //If item.Kind = crSubreportObject Then
            //loop code here
        //}
    }
}

我只能说这个解决方案并不理想,但是如果我找不到更好的解决方案,这就是我要做的......

CRAXDDRT.SubreportObject subReport = null;
foreach (CRAXDDRT.Section section in crystalReport.Sections)
{
    foreach (object item in section.ReportObjects)
    {
        subReport = item as CRAXDDRT.SubreportObject;
        if (subReport != null)
        {
            //loop code here
        }
    }
}

虽然这有效,但我希望有一个更好的解决方案......

最新更新