StartRecord and MaxRecords take effect only when DbDataTable is opened using the Active property or the Open method.
Another way to access only a subset of rows is to use FillPage method.
Assigning a value to this property invokes the fill operation.
static void FillDataTable(DbDataTable myDataTable, IDbConnection myConnection) { myDataTable.Connection = myConnection; myDataTable.SelectCommand = myConnection.CreateCommand(); myDataTable.SelectCommand.CommandText = "SELECT EmpNo, EName FROM Emp"; myDataTable.StartRecord = 0; myDataTable.MaxRecords = 10; try { myDataTable.Active = true; foreach(DataRow myRow in myDataTable.Rows) { foreach(DataColumn myCol in myDataTable.Columns) { Console.Write(myRow[myCol]+"\t"); } Console.WriteLine(); } } finally { myDataTable.Clear(); } }
Public Sub FillDataTable(ByVal myDataTable As DbDataTable, ByVal myConnection As IDbConnection) Try myDataTable.Connection = myConnection myDataTable.SelectCommand = myConnection.CreateCommand() myDataTable.SelectCommand.CommandText = "SELECT EmpNo, EName FROM Emp" myDataTable.StartRecord = 0 myDataTable.MaxRecords = 10 myDataTable.Active = True Dim myRow As DataRow Dim myCol As DataColumn For Each myRow In myDataTable.Rows For Each myCol In myDataTable.Columns Console.Write(myRow(myCol) & Chr(9)) Next myCol Console.WriteLine() Next myRow Finally myDataTable.Clear() End Try End Sub