【问题标题】:loop through crystal sub reports using craxdrt使用 craxdrt 循环浏览水晶子报告
【发布时间】:2012-11-14 02:03:17
【问题描述】:

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

【问题讨论】:

    标签: c# vb6-migration crystal-reports-8.5


    【解决方案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
            }
        }
    }
    

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

    【讨论】:

    • 我正在查看 CRAXDDRT 的 COM 接口,我认为这是您能想到的最好的。没有基本的 ReportObject 接口,因此您需要像在此处一样使用 as 运算符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多