2013-05-28 2 views
0

Crystal 보고서 필드에 대해 for 루프를 사용하는 데 문제가 있습니다.루프의 크리스탈 보고서에 유효하지 않은 색인

제 보고서 작성시 SQLExpressionFieldDefinition을 모두 추출하려고합니다. 그렇게하기 위해 보고서에서 SQLExpressionFieldDefinition의 수를 계산합니다.

for 루프는 마지막 반복에 도달 할 때까지 완벽하게 작동합니다. 잘못된 인덱스가 발생합니다. 즉, SQLExpressionFieldDefinition-> Count = 5 예를 들어, 첫 번째 4 반복 작업, 5에 도달하면 잘못된 인덱스 문제가 나타납니다.

for (nIterator = 1; nIterator <= rpt->DataDefinition->SQLExpressionFields->Count; nIterator++) 
      { 
       SQLExpressionFieldDefinition 
        *sqlExpressionFieldDefinition = rpt->DataDefinition->SQLExpressionFields->get_Item(nIterator); 

       strText = sqlExpressionFieldDefinition->Text;} 

당신의 answers.Thanks 대기 : 여기

는 코드입니다.

+0

크리스탈 리포트에 대해 모르겠다. 보통 배열 인덱스는 0에서 시작하여 n-1까지 실행됩니다. 따라서 count 값에 접근하는 것은 무효 인덱스가됩니다. – Naveen

답변

0

배열 인덱서는 값 0에서 시작하고 값 1에서 시작하지 않고 값 Count - 1으로 끝나야합니다.
Crystal Reports도이 규칙에 예외가 아닙니다.

for (nIterator=0; nIterator < rpt->DataDefinition->SQLExpressionFields->Count; nIterator++) 
+0

그건 내가 처음에 생각한 방법입니다. 그것은 nIterator가 <= 오순절 카운트인지 확인하기 위해 3 번째로 갈 때 유효하지 않은 인덱스를 던집니다. –

+0

루프를 돌면서 SQLExpressionFields 배열에서 항목을 제거하지 않으면 매우 이상하게 보입니다. 처음에 Count가 5 개일 경우 0에서 4까지의 인덱스를 사용하여 루프를 반복 할 때 거기에 있어야합니다. – Steve

관련 문제