Если для TUniQuery/TUniTable активирован режим SmartFetch, тогда не нужно ограничивать загрузку записей в набор данных. Пример использования SmartFetch:
Код: Выделить всё
UniQuery1.SQL.Text := 'SELECT DEPTNO, DNAME, LOC FROM DEPT';
UniQuery1.FetchRows := 50;
UniQuery1.KeyFields := 'DEPTNO';
UniQuery1.FetchAll := True;
UniQuery1.SmartFetch.LiveBlock := True;
UniQuery1.SmartFetch.Enabled := True;
UniQuery1.Open;
В режиме FetchAll = False, UniDAC отправляет один запрос на сервер, для получения всех записей. Но загружает записи, в набор данных, по мере необходимости(при перемещении курсора). Если переместить курсор в конец набора данных, тогда все записи будут загружены в набор данных.
В режиме SmartFetch на сервер отправляется запрос, для получения ограниченного количества записей. Загружаемое количество записей определяется свойством FetchRows. Запрос получения записей будет иметь приблизительно такой вид:
Код: Выделить всё
// FetchRows = 50;
SELECT * FROM Dept WHEREE DeptNO > 0 AND DeptNO <= 50
При перемещении курсора, будет отправлен еще один запрос на сервер:
Код: Выделить всё
SELECT * FROM Dept WHEREE DeptNO > 50 AND DeptNO <= 100
Если для опции SmartFetch.LiveBlock установлено значение True, тогда предыдущие 50 записей будут удалены с набора данных.