Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 29 мар 2024, 09:17

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: MemTableEh в качестве кэша данных
СообщениеДобавлено: 24 фев 2020, 05:10 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Здравствуйте.
Использую цепочку
TMSSQLConnection - TSQLQuery - TDataSetDriverEh - TMemTableEh - TDataSource - TDBGridEh
select в TSQLQuery по сути собирает справочник (данные не меняются в течении рабочего дня) из нескольких таблиц.
в where запроса передаются параметры выбранные пользователем в процессе работы на форме программы(другие гриды и строки поиска), эти параметры меняются часто, но по сути перебираются одни и теже в течении дня.
Т.е. c сервера постоянно дергаются одни и те же данные просто отфильтрованные по разному.

Вопрос, как правильно организовать кэширование данных, чтобы выборка отображалась максимально быстро.
1.
Нужно использовать вышеупомянутую цепочку, делать выборку всего справочника, и дальше крутить его фильтрами?

2.
Нужно ли использовать первый TMemTableEh для наполнения данными (в начале работы программы), и добавить второй TMemTableEh для отображения данных в гриде. А между ними передавать только требуемую, отфильтрованную часть строк?
В Руководстве нашел такой текст
Цитата:
Использование общих данных несколькими DataSet’ами
TMemTableEh позволяет использовать общий табличный массив записей несколькими компонентами TMemTableEh. При этом один из компонентов TMemTableEh является владельцем массива, а другие подключаются к этому массиву посредствам свойства ExternalMemData типа TCustomMemTableEh. Внешние данные видны другому компоненту TMemTableEh без учета фильтра. Свойство DataDriver может быть присвоено только у MemTable’а владельца массива. Сортировка и фильтрация в каждом DataSet’е не влияют друг на друга.


Получается в случае использования двух TMemTableEh (один с кэшем, другой для грида) нужно использовать именно такое соединение? или между ними еще можно втыкать какой-либо DataSetDriverEh?
из приведенной цитаты не понятно, в каком момент передаются и как отфильтровываются данные из TMemTableEh-кэша в TMemTableEh-грид

3.
Если нужно использовать связку TMemTableEh-кэш + TMemTableEh-грид то вопрос - можно ли использовать другие методы фильтрации данных между ними например воткнуть через какой-то компонент простой sql запрос? А то строка фильтрации имеет очень капризный синтаксис, можно кучу времени убить и не получить требуемого.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB