2014-10-15 2 views
1

X 레코드 수를 포함하는 데이터 테이블이 있습니다. SqlBulkCopy를 사용하여 이러한 레코드를 원격 데이터베이스로 보냅니다. 각 레코드에는 큰 BLOB가 포함되어있어서 전송 속도가 매우 느리기 때문에 10 개의 레코드 만 포함 된 각 대량을 보내려고합니다.프로세스 X 루프에서 DataTable의 레코드 수

내가 지금 가지고있는 것은 첫 번째 레코드를 업로드 한 다음 10 개의 세트로 업로드하지만 리마인팅 레코드는 생략합니다. 문제는 내 루프가 잘못되었다는 것입니다. 0-10, 11-20 등의 기록을 처리해야합니다.

아이디어가 있으십니까? 여기

For Each iRow As DataRow In dtSortedDataTable.Rows 
dtToUpload.ImportRow(dtSortedDataTable.Rows(dtSortedDataTable.Rows.IndexOf(iRow))) 
If iCurrent Mod 10 = 0 Then 
    'Call function SqlBulkCopy to upload 10 records existing in the dtToUpload 
End If 
iCurrent += 1 
Next 

답변

2

몇 가지 문제 :

If (iCurrent + 1) Mod 10 = 0 Then 
  • 귀하의 정해진 범위 :

    1. iCurrent 가정은 당신이 iCurrent에 하나를 추가 할 필요가 원하는 동작을 취득, 0에서 시작 구현하려고하는 논리에 따라 올바르지 않습니다. 당신은 0-9, 10-19을 처리 할 등

    2. 루프 후 대량 복사 업로드를 추가하거나 iCurrent 당신이 처리하는 마지막 항목 있는지 확인하는 것을 잊지 마십시오 :

      If (iCurrent + 1) Mod 10 = 0 OrElse (iCurrent = dtSortedDataTable.Rows.Count - 1) Then 
      
  • +0

    어떻게 마지막 색인을 얻을 수 있습니까? – alwaysVBNET

    +0

    데이터 테이블의 행을 사용하여 완료 시점을 결정하는 대답이 업데이트되었습니다. –

    +0

    좋은 대답, 고마워. – alwaysVBNET

    관련 문제