Страница 1 из 1

Вставка вместо имен полей - Description

Добавлено: 23 май 2006, 18:11
alecsar
Люди добрые помогите. Я начал работать на firebird 1.5.3. Базы создаю в IBExpert. Хочу чтобы названия полей при выполнении запроса заменялись на Description этого поля. Скажите откуда програмно выдернуть Description?
Я использую компоненты IBX. Может в них есть какая либо стандартная процедура о которой я не знаю?

Добавлено: 23 май 2006, 18:27
kdv
select ... from rdb$relation_fields

Добавлено: 26 июн 2006, 14:12
stix-s
kdv писал(а):select ... from rdb$relation_fields
ых, а вот как бы мне извернуться и получить Description, если я джойню 3-4 таблицы и есть у меня слабость первичный ключ обзывать везде REC_ID, но смысл для каждой таблицы несколько иной: где код сотрудника, а где код ящика?
вариант where rdb$relation_name='my table' не совсем меня устраивает, ибо хочется имя таблицы автоматом выдергивать

Добавлено: 26 июн 2006, 14:44
Dimitry Sibiryakov
Ну так и выдергивай. У каждого поля есть указание к какой таблице он принадлежит (RTFM xsqlvar.relationname).

Добавлено: 27 июн 2006, 06:29
stix-s
Dimitry Sibiryakov писал(а):Ну так и выдергивай. У каждого поля есть указание к какой таблице он принадлежит (RTFM xsqlvar.relationname).
ух, спасибо за подсказку :) абыдна только, что в

TFIBQuery
property Fields[const Idx: Integer]: TFIBXSQLVAR read GetFields;

а вот в TpFIBDataSet
property Fields: TFields;

и все рано ведь при выполнении запроса типа

Код: Выделить всё

SELECT
 PRG_LIST.REC_ID,
 DEPARTMENTS.REC_ID,
 USERS.REC_ID,
 MODULES.REC_ID, .... 

вернет мне поля REC_ID, REC_ID1, REC_ID2, REC_ID3 .....
придется изгаляться ;)

Добавлено: 27 июн 2006, 07:37
CyberMax
Альясы для полей никто не отменял.

Добавлено: 27 июн 2006, 08:07
stix-s
CyberMax писал(а):Альясы для полей никто не отменял.
здорово, канешна, кто бы ишо мне эти алиасы в
rdb$relation_fields прописал :roll:

Добавлено: 27 июн 2006, 08:09
Dimitry Sibiryakov
Вообще-то в том же sqlvar есть и настоящее имя поля...

Добавлено: 27 июн 2006, 08:25
stix-s
Dimitry Sibiryakov писал(а):Вообще-то в том же sqlvar есть и настоящее имя поля...
Воистину ты прав, надо было мне только доку повнимательней почитать :(
Все, одену каску и спрячусь за камнем - можете кидаться кирпичами.
:oops:

Добавлено: 05 ноя 2006, 11:41
alecsar
Подскажите что делать
выполняю такой код:

Код: Выделить всё

select
...
CAST(MASS_FD AS NUMERIC(18,3)),
...
from
...
Хочу получить дескрипшен и вставить вместоназвания поля. Все поля удаются, а указанное выше:

iCounter1 := 0 to FieldCount - 1
IBDataSet.Current.Vars[iCounter1].SqlVar.AliasName = CAST
IBDataSet.Current.Vars[iCounter1].SqlVar.SqlName = CAST
IBDataSet.Current.Vars[iCounter1].SqlVar.RelName = ""
Есть ли какой выход и как получить настоящие имена поля и таблицы
(может я неправильный путь к sqlvar использую)
Если да дайте пример

Добавлено: 05 ноя 2006, 14:03
kdv
не путай. описание поля вообще никак с запросом не связано и не может быть связано. То есть, оно может быть связано, если такое поле вообще есть, для него есть description, и это поле явно выбирается в запросе без всяких преобразований.
Например, в случае cast это уже НЕ исходный столбец.
Если тебе всего-лишь надо в гриде или еще где показывать русские имена столбцов - используй TField.DisplayLabel.