Как при редактировании записи в датасете одновременно произвести редактирование других записей из этого датасета

Как при редактировании записи в датасете одновременно произвести редактирование других записей из этого датасета?

У меня стоит такая задача:
при изменении значения поля записи, которая является по определенному признаку основной, пересчитать значения полей у других записей из этой же таблицы. При этом я не хочу потерять фокус с текущей записи и продолжать ее редактирование. Этот функционал я помещаю в функцию OnDataSetDataChangе.

Нравится

10 комментариев

На событие DataChange Dataset'а изменяемой записи повесить вызов функции OnDataSetDataChangе.

это я понял. Суть в другом: как можно при редактировании одной записи в таблице паралельно изменть другие записи в этой же таблице.

Создайте сервис запроса (Update), который будет вносить изменения в необходимые записи. Или проблема с отбором записей?

Можно еще создать новый сервис датасета и редактировать в нем.

Андрей, я бы сделал триггер. Но если с этим трудности, то самый легкий способ предложил Сергей, где под словом новый надо понимать - создать новый экземпляр датасета(GetNewItemByUSI) и отфильтровать его перед редактированием.

Попробую создать новый сервис SelectQuery и Dataset для работы с той же таблицей

"Кошкаров Андрей Викторович" написал:
...новый сервис SelectQuery и Dataset для работы с той же таблицей...

Андрей это лишнее. У Вас уже есть он. Зачем их множить? Вы потом сами запутаетесь зачем Вам для редактирования одной и той же таблицы 5-6 почти одинаковых сервисов.

Спасибо за помощь, сейчас попробую.

Вы наверное меня неправильно поняли. Не нужен новый сервис, нужен новый экземпляр того же сервиса, например:
var Dataset = Services.GetNewItemByUSI('ds_Task');
Dataset.Open();

while (!Dataset.IsEOF) {

Dataset.Edit();
Dataset('Name') = 'update';
Dataset.Post();
Dataset.GotoNext();

}

ну и еще фильтры и отключение событий

"Глова Сергей" написал:Вы наверное меня неправильно поняли.

Действительно, так и было :) Спасибо за помощь

Показать все комментарии