Задать вопрос

Как редактировать joined поля в одном DbGrid?

Есть 3 таблицы:
-Foods
-Ingredients
-Link

Таблица блюд и ингредиентов связана Many-to-Many через промежуточную таблицу Link.
Структура Foods:
fa5e2a5a4a974dfe9b150485b1aced94.png
Структура Ingredients:
be107440d6164406a85d4d1d16a38fa3.png
Структура Link:
e0c62adeb1414cc1ac3fadbf5efd6482.png

В чем идея: есть некий список блюд. По двойному клику открывается окно со списком ингредиентов, количеством брутто и ценой. Имя блюда и цена летят из Ingredients, а количество брутто из Links. Для удобства пользования необходимо редактирование прямо в ячейках таблицы (в моем случае cxGrid).

Данные вытаскиваю через Query с master-detail отношениями. Каким образом можно данные из двух разных датасетов засунуть в 1 таблицу и редактировать их там же? В моем случае делаю запрос с Left Join необходимых мне полей из таблицы ингредиентов, но они не редактируемые, только поля, которые принадлежат Link, поддаются редактированию.
  • Вопрос задан
  • 2981 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Lacaille
Вариант1. CxGrid позволяет удобно редактировать связанные таблицы. Пользователь на нужном блюде нажимает "+" и редактирует список ингридиентов.
sme_cx.gif
Вариант2. Можно добавить компонент UpdateSQL и привязать его к DataSet.UpdateObject. В свойстве UpdateSQL.ModifySQL прописать запрос на изменение записи. Компонент UpdateSQL знает такую переменную как OLD_<имя ключа> по которому можно обратится к нужному полю, пример запроса:
UPDATE <имя таблицы>
   SET <имя поля для изменения> = :<имя поля для изменения>
 WHERE <ключ таблицы> = :OLD_<ключ таблицы>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы