내 프로그램에서 Excel 용 레코드를 루프하여 데이터 테이블을 만듭니다. 그런 다음 첫 번째 루프에서 수행 할 수없는 몇 가지 추가 데이터 유지 관리 작업을 수행해야합니다.데이터 테이블을 반복 할 때 오류가 발생했습니다.
다른 값을 유지하면서 중복 값이있는 행을 제거하기 위해 기존 데이터 테이블을 반복하는 가장 좋은 방법을 찾으려합니다.
예제 테이블에는 세 개의 열이 있습니다. 각 CompanyCode에 대해 중복 된 BillingItem을 제거하고 가장 높은 FeeAmount를 유지해야합니다. 따라서 CompanyCode 1234의 경우 첫 번째 행과 두 번째 행을 제거하고 네 번째 행은 유지해야합니다.
이 값은 항상 같은 순서가되는 것은 아닙니다.
+-------------+-----------+-------------+
| CompanyCode | FeeAmount | BillingItem |
+-------------+-----------+-------------+
| 1234 | 10 | A |
| 1234 | 10 | A |
| 1234 | 15 | B |
| 1234 | 20 | A |
| 9876 | 10 | A |
| 9876 | 20 | B |
| 9876 | 30 | A |
| 9876 | 30 | A |
+-------------+-----------+-------------+
루프가 시작되면 "컬렉션이 수정되었으므로 열거 연산이 실행되지 않을 수 있습니다."라는 오류 메시지가 나타납니다. 아래 루프에 대한 내 코드입니다.
For Each loRow In dt.Rows
Dim liDupeCount As Integer = 0
liCompanyCode = loRow(0)
ldFeeAmount = loRow(1)
lsBillingItem = loRow(2)
Dim dupeFeeAmounts() As DataRow = dt.Select("CompanyCode = '" & liCompanyCode & "' and FeeAmount = '" & ldFeeAmount & "' and BillingItem = '" & lsBillingItem.Replace("'", "''") & "'")
For Each row As DataRow In dupeFeeAmounts
liDupeCount += 1
Next
If liDupeCount > 1 Then
dt.Rows(liRowCount).Delete()
End If
liRowCount += 1
Next
반복하는 항목을 수정하면 루프가 뒤로 이동합니다. – Plutonix