Я пытаюсь зацикливаться на кристаллических подзаголовках с использованием CRAXDDRT в C# 2010, и я сталкиваюсь с проблемой. Я нашел много VB6 код, который выглядит следующим образом ...цикл через хрустальные отчеты sub с использованием craxdrt
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
//}
}
}
Я искал через COM-интерфейс для CRAXDDRT, и я думаю, что это о лучшем случае вы будете быть в состоянии придумать. Нет базового интерфейса ReportObject, поэтому вам нужно будет использовать оператор 'as', как вы здесь делаете. – pstrjds