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で見た目も機能も優れていますが、CRXReportObjectはオブジェクトであるため、C#では機能しません。

 If CRXReportObject.Kind = crSubreportObject Then

...「Kind」はオブジェクトのメソッドではないため、機能しません。誰かがこれを回避するための提案がありますか?誰かがCrystalReportActiveXオブジェクトを使用しないことを提案する前に、私たちはできません。私たちはそれに固執しています...これはこれまでのコードです...

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 に答える