-
Господа мастера, можно ли в fIBPlus компонентах (fIBDataSet) автоматически грузить описания полей в DisplayLabel? Когда-то мне подсказывали простое решение - убей, не помню :( Вариант ручного получения типа
select RDB$DESCRIPTION from RDB$RELATION_FIELDS
where (RDB$RELATION_NAME = 'MyTable')
and
(RDB$FIELD_NAME = 'MyField') ясен, но если таблиц много, то в цикле перебирая все fIBDataSet'ы, нужно получать имя исходных таблиц. Парсить SelectSQL для этого? а Если join из нескольких таблиц... В общем огород нагородить можно...
-
FIB умеет создавать табличку FIB$FIELDS_INFO, откуда берет DisplayLabel. Туда и переливайте.
-
Ок, стал использовать. Но чисто ради эксперимента стал писать описания полей не в FIB$FIELDS_INFO напрямую, а читать их в из описания полей в таблицу FIB$FIELDS_INFO с тем, что бы фактически иметь в качестве DisplayLabel - описание поля (RDB$DESCRIPTION). Но при старте DisplayLabel устанавливаются в соответствии с текущим содержимым FIB$FIELDS_INFO, когда в FIB$FIELDS_INFO вычитываются значениея из RDB$DESCRIPTION, DisplayLabel уже не меняется. Получается что праильный DisplayLabel у поля я вижу только при следующем запуске приложения... Как принудительно перегрузить описания полей из репозитория?
Да, и ещё пара моментов: 1. Автоматически не сохраняется значение Display_Width при изменении ширины колонок - это вообще предусмотрено, или только то что прописано Display_Width - такая ширина при старте и будет? 2. При создании Column'ов в DBGrid'е свойство Visible из репозитория игнорируются?
-
Уточните задачу, там что, динамическое добавление полей происходит? Почему нельзя 1 раз загрузить дескрипторы в FIB$FIELDS_INFO, пусть даже хранимую процедуру для этого написать?
1. "изменение ширины колонок" это где, в DBGrid? Он никакой обратной связи с FIB$FIELDS_INFO не имеет, пишите ручками, коли надо. 2. Visible в FIB$FIELDS_INFO= Visible в Fields Editor датасета, если там поля не добавлять, то не факт, что другие компоненты будут понимать.
-
> Уточните задачу
да, в общем то тут дело принципа... Задачу я решу, вбив описания полей даже прямо в FIB$FIELDS_INFO, и без лишнего кода. Просто создавая структуру БД в IBExpert позабивал описания полей, и возникла мысль, что было бы недурно их напрямую в шапки таблиц втиснуть. Натура дурная - потратив времени в 10 раз больше, чем если бы переписал описания полей ручками в FIB$FIELDS_INFO :)
> никакой обратной связи с FIB$FIELDS_INFO
ясно. В принципе я в ини-файл ширины скидывал, чтобы у каждого юзверя свои настройки были. Смысл хранить их в FIB$FIELDS_INFO пропадает...
> если там поля не добавлять, то не факт
нет, всё ок, если только не добавлять колонки в гриды.
|