2

我正在尝试在 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

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

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

1 回答 1

1

我可以说这个解决方案并不理想,但如果我找不到更好的解决方案,这就是我要采用的......

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
        }
    }
}

虽然这可行,但我欢迎更好的解决方案......

于 2012-11-26T16:48:04.920 回答