mdfv писал(а):Решение у проблемы есть, т.к. у фиба есть такая не менее полезная вещь как репозиторий полей, где полянки хранятся вместе со своими таблицами, и именами для отображения в гриде.
И каким-то образом датасет понимает какое поле в соответствии с алиасом таблицы куда подставить.
Видимо придется поглубже копнуть исходники фибовские, чтобы оттуда выудить данный метод.
Всё достаточно ясно описано в Руководстве разработчика FIBPlus. Из него же видно, что репозитарий полей в FIBPlus несколько "ущербный", т.к. описания полей привязываются к именам таблиц, а не к DataSet'ам, что ограничивает гибкость, прибивая настройку полей для каждого DataSet'а, но получая универсальное описание поля таблицы в одной записи. Там же можно сохранять дополнительно и свои настройки полей (например, тот же Origin).
Очень неудобно, что алиасы полей в FIBPlus свалили в одну кучу. У меня, например, в одном запросе алиас CNT может соответствовать одному выражению, а другом - совершенно другому. И выдумывать уникальные алиасы по-моему слишком муторно. Легче прикрутить свою табличку с настройками полей для каждого DataSet'а отдельно.
Кстати, а как быть, если в запросе используется
group by? Тут уж, хочешь не хочешь, а придётся ваять собственный репозитарий полей, в котором должен быть ещё и признак группируемости Field.Origin: какое надо в секцию
where, а какое в
having?