Показать сообщение отдельно
  #6  
Старый 28.07.2014, 17:55
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 576
Версия Delphi: 6
Репутация: выкл
По умолчанию

Есть два варианта:
  • В Oracle 11.2 наконец-то появилась агрегатная функция для строк -- listagg. Можно воспользоваться ею, но тогда после редактирования придется перечитывать или весь запрос в гриде целиком, или только одну строку, если ODAC это позволяет. На память не помню.
  • Другой способ -- держать отдельные запросы, читающие исходные данные для агрегации целиком, а саму агрегацию делать на клиенте в полях с FieldKind = fkInternalCalc (вычисляемые поля с буферизацией значений).
Редактирование в обоих случаях придется делать как-то отдельно, поскольку для грида требуется агрегация всех доступных связанных значений, а для редактирования -- только для одной записи. В ODAC, в принципе, можно выкрутиться с AddWhere, чтобы не дублировать компоненты запросов агрегируемых значений.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием