"EhLib.Com"
https://forum.ehlib.com/ru/

Обновить состояние чекбоксов
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=2726
Страница 1 из 1

Автор:  dbsurgeon [ 23 янв 2019, 17:18 ]
Заголовок сообщения:  Обновить состояние чекбоксов

Добавил новые поля в мемо таблицу для выбора ячеек

После апдейта определенной записи - сохраняю в базу, после переоткрытия материнской таблицы делаю:

Код:
dmMain.mtFieldPal.DisableControls;
       dmMain.mtFieldPal.First;
       while not dmMain.mtFieldPal.Eof do
        begin
         dmMain.mtFieldPal.Edit;
         dmMain.mtFieldPal.FieldValues['R'] := False;
         dmMain.mtFieldPal.FieldValues['S'] := False;
         dmMain.mtFieldPal.Post;
         dmMain.mtFieldPal.Next;
        end;
       dmMain.mtFieldPal.First;
       dmMain.mtFieldPal.EnableControls;


если таблица маленькая - то работает быстро, если более 10000 строк - чрезвычайно медленно.
Есть какой другой способ сделать состояние всех значений в чекбоксах = "не выбрано"?

Автор:  EhLibSupport [ 05 фев 2019, 00:22 ]
Заголовок сообщения:  Re: Обновить состояние чекбоксов

Добрый день.

Обычно, если необходимо обновить значения во всех записях или
в группе записей у которых есть общая ссылка, это делается через
один отдельный запрос.

Код:
update table_name
  set R = False, S = False
  where ref_key = :ref_key_value

Автор:  dbsurgeon [ 08 фев 2019, 16:09 ]
Заголовок сообщения:  Re: Обновить состояние чекбоксов

Спасибо,

это решение на стороне сервера базы, на клиента уже придет обновленный датасет.
Получается, что если колонка создана уже на клиенте, то кроме как пробежаться по циклу по записям никакого варианта нет?

Автор:  EhLibSupport [ 08 фев 2019, 17:20 ]
Заголовок сообщения:  Re: Обновить состояние чекбоксов

Добрый день.

Количество вариантов решения вашей задачи зависит от точного определения ограничений на работу функционала.

Если нужно обновить данные "быстро", но в ДатаСете нет возможности перезагрузить данные с сервера,
то вы можете выполнить данную операцию за несколько "быстрых" шагов.
1. Обновить данные на сервере с помощью запроса
update table_name set R = False, S = False where ref_key = :ref_key_value
2. Отключить в ДатаСете обновление на сервер.
3. Пробежаться по ДатаСету и проставить аналогичное значение полей.
4. Включить в ДатаСете обновление на сервер.

Страница 1 из 1 Часовой пояс: UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/