2013-05-28 34 views
0

我有一個問題,使用我的循環與水晶報告領域。無效的索引,在水晶報告循環

與我的我試圖從我的報告中提取所有SQLExpressionFieldDefinition's。 爲了做到這一點,我正在創建報告中的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是否爲<= whit count。 –

+0

這似乎很奇怪,除非您嘗試從循環的SQLExpressionFields數組中移除項目。如果您最初有一個Count爲5的項目,則應使用從0到4的索引循環播放它們。 – Steve