2016-01-11 4 views
0

Я использую DataTable.Rows.Find, чтобы найти определенную строку в Datatable, чтобы знать, сколько строк есть до этого (потому что мне нужно выбрать до только их):Ошибка при попытке получить «_RowId» (чтобы подобрать строки перед ним)

Using DT_DBData As DataTable = _ 
    DB_Functions.mQueryDT("SELECT * FROM UpdTest ORDER BY Row_Num") 
    With DT_DBData 
     .PrimaryKey = {.Columns("Id")} 
    End With 
    Dim mRow As DataRow = DT_DBData.Rows.Find("6") 

Но когда я пытаюсь получить _RowId, чтобы узнать, сколько строк есть до того,

MsgBox(mRow._rowid) 

Я получаю сообщение об ошибке:

Error 4 'System.Data.DataRow._rowID' is not accessible in this context because it is 'Friend'

Как я могу исправить?

Есть ли другой способ получить количество строк до найденного?

EDIT:

На данный момент я решая, используя код, приведенный ниже, чтобы забрать строки перед один нашел:

Dim NewRows() As DataRow 
For x As Short = 0 To DT_DBData.Rows.Count - 1 
    If Not DT_DBData.Rows(x).Equals(mRow) Then 
     ReDim Preserve NewRows(x) 
     NewRows(x) = DT_DBData.Rows(x) 
    Else 
     Exit For 
    End If 
Next 

Я буду благодарен за лучшие решения

+0

Можете ли вы объяснить, почему вам нужно знать эту информацию? Возможно, есть лучший способ: – Steve

+0

@Steve Мне нужно знать, сколько строк есть до того, как они найдены, чтобы взять только их из DataTable. – genespos

+0

. DataTable.Select call с надлежащим состоянием может работать. Думаю, – Steve

ответ

0

Не знаете, что такое ваши rdbms, но если вы хотите ссылку Row_Num, вы должны добавить его в свой выбор.

DB_Functions.mQueryDT("SELECT *, Row_Num as row_id FROM UpdTest ORDER BY Row_Num") 
+0

Извините, что создал путаницу. Показанный код является лишь примером. В реальном сценарии я получаю данные из отчета (таблица html), и я помещаю их в DataTable, поэтому я не могу контролировать, как они упорядочены. Я редактировал вопрос, показывающий, как я решаю (но я думаю, что есть лучшие решения) – genespos