Постраничное получение записей FetchAll = false
Постраничное получение записей FetchAll = false
У UniQuery не нашёл FetchAll
UniQuery.FetchRows установлено в 25
Открываю DataEditor, туда загружаются все 453 записи.
А как сделать "постраничную" загрузку в грид?
Вообще-то я хочу постранично выводить в cxGrid, там есть GridMode для таких случаев.
UniQuery.FetchRows установлено в 25
Открываю DataEditor, туда загружаются все 453 записи.
А как сделать "постраничную" загрузку в грид?
Вообще-то я хочу постранично выводить в cxGrid, там есть GridMode для таких случаев.
Ели его добавить только к конкретному UniQuery, должно работать или нет?
или нужно в UniConnection добавлять?
Код: Выделить всё
qUsersEkr.SpecificOptions.Add('FetchAll = False');
Что-то не получается. И к connection добавил
В cxGrid`е установил DataModeController.GridMode := True и тоже 25 записей в GridModeBuffer.
Код: Выделить всё
connEkr.SpecificOptions.Add('FetchAll = False');
Добрый день,
У TUniConnection нет опции FetchAll так как эта опция отвечает за fetch данных и применима только к DataSet. Для того чтобы опция была применима в дизайн-тайме вам необходимо установить ее в редакторе компонента UniQuery на вкладке Options - в этом случае в DataEditor будет отображаться заданное количество записей.
Для "постраничного" отображения данных в cxGrid достаточно установить опцию FetchAll у TuniConnection в False и следующие опции crGrid
проверить правильность поведения вы можете создав обработчик события TuniQuery.AfterFetch
У TUniConnection нет опции FetchAll так как эта опция отвечает за fetch данных и применима только к DataSet. Для того чтобы опция была применима в дизайн-тайме вам необходимо установить ее в редакторе компонента UniQuery на вкладке Options - в этом случае в DataEditor будет отображаться заданное количество записей.
Для "постраничного" отображения данных в cxGrid достаточно установить опцию FetchAll у TuniConnection в False и следующие опции crGrid
Код: Выделить всё
cxGrid1DBTableView1.DataController.DataModeController.GridMode := true;
cxGrid1DBTableView1.DataController.DataModeController.GridModeBufferCount := 25;
Код: Выделить всё
procedure TForm6.UniQuery1AfterFetch(DataSet: TCustomDADataSet);
begin
ShowMessage(IntToStr(UniQuery1.RecordCount));
end;
Установил в False
Всё равно все записи
Но. Если вызвать DataEditor прямо из окна UniQueryEditor, то да, 25 записей:
Ну и cxGrid всё равно показывает все записи, хотя свойства грида установлены правильно:
и это не могу понять:
добавил:
Мне было показано это сообщение через каждые 25 записей, начиная с нуля и до 453.
Всё равно все записи
Но. Если вызвать DataEditor прямо из окна UniQueryEditor, то да, 25 записей:
Ну и cxGrid всё равно показывает все записи, хотя свойства грида установлены правильно:
и это не могу понять:
У TUniConnection нет опции FetchAll
Для "постраничного" отображения данных в cxGrid достаточно установить опцию FetchAll у TuniConnection в False
добавил:
Код: Выделить всё
procedure TDM.qUsersEkrAfterFetch(DataSet: TCustomDADataSet);
begin
ShowMessage(qUsersEkr.RecordCount);
end;
Добрый день,
Мы проверили Fetch данных с выключенной опцией FetchAll и установленными опциями GridMode и GridModeBufferCount (cxGrid версии 6.52 delphi 2010) и данные получаются "постранично". Попробуйте проверить это поведение используя стандартный DBGrid. Если проблема возникает только с cxGrid, пожалуйста, обратитесь к разработчика для уточнения опций необходимых для отключения полного вычитывания данных из DataSet
Мы проверили Fetch данных с выключенной опцией FetchAll и установленными опциями GridMode и GridModeBufferCount (cxGrid версии 6.52 delphi 2010) и данные получаются "постранично". Попробуйте проверить это поведение используя стандартный DBGrid. Если проблема возникает только с cxGrid, пожалуйста, обратитесь к разработчика для уточнения опций необходимых для отключения полного вычитывания данных из DataSet
Re: Постраничное получение записей FetchAll = false
Ещё раз проделал опыт в design-time.
Не получается у меня выводить записи постранично.
В таблице всего 18 записей.
Указал 10 в свойстве FetchRows:
Подключил стандартный TDBGrid, он показывает все 18 записей, а не 10:
Вот ваш встроенный в UniQuery грид тоже показывает 18 (к UniQuery ничего не подключено больше). Правой кнопкой по UniQuery, вызываю DataEditor:
А теперь вот что заметил. Если в DataEditor нажать Close, а потом Open, то встроенный грид показывает правильно - 10 записей. Но при этом свойство active всё время в false.
Так как же мне добиться требуемого результата?
Не получается у меня выводить записи постранично.
В таблице всего 18 записей.
Указал 10 в свойстве FetchRows:
Подключил стандартный TDBGrid, он показывает все 18 записей, а не 10:
Вот ваш встроенный в UniQuery грид тоже показывает 18 (к UniQuery ничего не подключено больше). Правой кнопкой по UniQuery, вызываю DataEditor:
А теперь вот что заметил. Если в DataEditor нажать Close, а потом Open, то встроенный грид показывает правильно - 10 записей. Но при этом свойство active всё время в false.
Так как же мне добиться требуемого результата?
Re: Постраничное получение записей FetchAll = false
Ещё раз поэкспериментировал, но уже в run-time.
Получилось. TcxGrid показывает порциями по 10 записей.
Получилось. TcxGrid показывает порциями по 10 записей.
Re: Постраничное получение записей FetchAll = false
Интересно, а если в гриде и в UniQuery указать разное количество записей для буфера...
Re: Постраничное получение записей FetchAll = false
Ещё вопрос.
Свойство FetchAll в SpecificOptions уже есть, оно там постоянно:
Так вот, как им управлять программно?
Т.е. пользователь дёргает CheckBox, а как мне проще программно менять значение этого свойства?
Искать его, удалять, затем заново добавлять, или как?
Свойство FetchAll в SpecificOptions уже есть, оно там постоянно:
Так вот, как им управлять программно?
Т.е. пользователь дёргает CheckBox, а как мне проще программно менять значение этого свойства?
Искать его, удалять, затем заново добавлять, или как?
Re: Постраничное получение записей FetchAll = false
hello,
Для изменения SpecificOptions в ран-тайм используеться следующая конструкция
в Вашем случае
В приведенном вами DBGrid отображаються все записи так как DBGrid Вычитывает столько записей сколько он может отобразить, т.е. если размер (высота) DBGrid позволяет отобразить 100 записей то в независимости от настроек из базы будут получены 100 записей, это же поведение приводит и к отображению всех записей DataEditor (эти записи уже были получены в гриде)
Для изменения SpecificOptions в ран-тайм используеться следующая конструкция
Код: Выделить всё
UniQuery.SpecificOptions.Value['Название опции']:= 'значение';
Код: Выделить всё
UniQuery.SpecificOptions.Value['FetchAll']:= 'false'; //True
Re: Постраничное получение записей FetchAll = false
Спасибо за пояснения.
Re: Постраничное получение записей FetchAll = false
Наверное valueS?
Код: Выделить всё
UniQuery.SpecificOptions.Values['Название опции']:= 'значение';