2012-11-26 2 views
1

C# 2010의 CRAXDDRT를 사용하여 크리스탈 하위 보고서를 반복하려고하는데 문제가 발생합니다. 이 CRXReportObject 객체이기 때문에이 C#에서 작동하지 않습니다 VB6에서 잘 작동 & 보이는, 그래서이 줄 동안 나는 다음과 같습니다 VB6 코드를 많이 ...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 

을 발견했습니다 ...

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

답변

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

이 내가 더 나은 솔루션을 환영 작동하지만 ... ... 갈거야

+0

내가 CRAXDDRT에 대한 COM 인터페이스를 통해보고 있었고, 난이 당신이 할 가장에 대한 생각 함께 갈 수 있습니다. 기본 ReportObject 인터페이스가 없으므로 여기에서 수행하는 것처럼 'as'연산자를 사용해야합니다. – pstrjds