2014-01-04 2 views
0

Я продолжаю получать следующую ошибку и не знаю, как это исправить. Как довольно новый пользователь VB.NET, я думаю, он говорит, что в этой позиции нет строк? Чтобы компенсировать это, я включил оператор If для проверки количества строк, но он все еще производит эту ошибку. Фактически, почтовый ящик не стреляет вообще. Может кто-нибудь, пожалуйста, сообщите, как я могу исправить эту ошибку. БлагодаряДля цикла, вызывающего ошибку IndexOutOfRange

Ссылки, где полученный код: http://support.microsoft.com/kb/305271/en-us

Там нет строки в позиции 1.

Private Sub loadpages() 

    Dim i As Integer 
    Dim startRec As Integer 
    Dim endRec As Integer 
    Dim dtTemp As DataTable 
    'Dim dr As DataRow 

    'Duplicate or clone the source table to create the temporary table. 
    dtTemp = dtSource.Clone 

    If currentPage = PageCount Then 
     endRec = maxRec 
    Else 
     endRec = pageSize * currentPage 
    End If 

    startRec = recNo 

    'Copy the rows from the source table to fill the temporary table. 
    If dtSource.Rows.Count <> 0 Then 

     For i = startRec To endRec - 1 
      dtTemp.ImportRow(dtSource.Rows(i)) <--- ERROR HERE 
      recNo = recNo + 1 
     Next 
    Else 
     MessageBox.Show(dtSource.Rows.Count.ToString()) 
    End If 
    frmMain.DGV.DataSource = dtTemp 
    DisplayPageInfo() 
    'fillPostings() 
End Sub 

выпадающего юг изменить размер_страницы

Sub cmbpage() 

     'Set the start and max records. 
     pageSize = CInt(frmMain.cmbPageSize.Text) 
     maxRec = dtSource.Rows.Count 
     PageCount = maxRec \ pageSize 
     MessageBox.Show(CStr(maxRec)) 
     ' Adjust the page number if the last page contains a partial page. 
     If (maxRec Mod pageSize) > 0 Then 
      PageCount = PageCount + 1 
     End If 

     'Initial seeings 
     currentPage = 1 
     recNo = 0 

     ' Display the content of the current page. 

     UDGfillPostings() 
     loadpages() 

    End Sub 
+1

что значение 'startRec 'и' endRec'? – Sachin

+0

Try For i = 0 To dtSource.Rows.Count - 1 Затем ... и посмотрим, работает ли это. – Inisheer

+0

Вы пробовали MessageBox.Show (dtSource.Rows.Count.ToString())? –

ответ

1

Вы, наверное, хотите, чтобы это зацикливание.

For i = 0 To dtSource.Rows.Count-1 

Если вы просто хотите скопировать один DataTable к другому, то вы можете просто использовать DataTable.Copy метод.

Dim dtTemp As DataTable 
dtTemp = dtSource.Copy() 
1

вы назначили startRec к 1, поэтому он бросает ошибку, когда dtSource.Rows(1), так как есть только один элемент в массиве

вы можете исправить это с помощью dtSource.Rows(i-1)

+0

dtTemp.ImportRow (dtSource.Rows (i - 1)) все еще производит ошибку. благодаря – user1532468

Смежные вопросы