"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/ |