Как получить описания полей таблицы (Как в IBExpert) ???
Как получить описания полей таблицы (Как в IBExpert) ???
Подскажите, как получить описание поля таблицы. В IBExpert это реализовано. А в Internet нигде не могу найти...
Можно по подробнее
А можно по подробнее, что это означает??? В Access+ADO доступ к описанию поля осуществляется ч-з Fields('').Properties('Descriptions'), а как получить 'Descriptions' поля бд FB ч-з IBX или что-нибудь другое???dimitr писал(а):RFTM Language Reference
что-то ты не хочешь смотреть, куда тебе сказали. у системных таблиц есть столбец rdb$description. Туда IBExpert и пишет описание. Если тебе его надо выбрать - выбирай на здоровье. Например, расширь запрос
www.ibase.ru/devinfo/sysqry.htm
www.ibase.ru/devinfo/sysqry.htm
Последний раз редактировалось kdv 24 мар 2008, 17:23, всего редактировалось 1 раз.
Ну вот! Все понятно, спасибо!!!kdv писал(а):что-то ты не хочешь смотреть, куда тебе сказали. у системных таблиц есть столбец rdb$description. Туда IBExpert и пишет описание. Если тебе его надо выбрать - выбирай на здоровье. Например, расширь запрос
www.ibase.ru/devinfo/sysqry.htm
Re: Как получить описания полей таблицы (Как в IBExpert) ???
Я это сделал так.Antoxa писал(а):Подскажите, как получить описание поля таблицы. В IBExpert это реализовано. А в Internet нигде не могу найти...
Сначала создаём полезное VIEW:
Код: Выделить всё
/* View: FIELDS */
CREATE VIEW FIELDS(
TABLE_NAME,
"POSITION",
NAME,
"LENGTH",
"TYPE",
SCALE,
"SUB_TYPE",
DESCRIPTION,
IS_COMPUTED,
COMPUTED_SOURCE,
NOT_NULL)
AS
SELECT
R.RDB$RELATION_NAME TABLE_NAME,
R.RDB$FIELD_POSITION "POSITION",
R.RDB$FIELD_NAME NAME,
F.RDB$FIELD_LENGTH "LENGTH",
F.RDB$FIELD_TYPE "TYPE",
F.RDB$FIELD_SCALE SCALE,
F.RDB$FIELD_SUB_TYPE "SUB_TYPE",
R.RDB$DESCRIPTION "DESCRIPTION",
CASE
WHEN (F.RDB$COMPUTED_SOURCE IS NOT NULL) THEN 1
ELSE 0
END IS_COMPUTED,
F.RDB$COMPUTED_SOURCE COMPUTED_SOURCE,
CASE
WHEN (R.RDB$NULL_FLAG = 1) THEN 1
ELSE 0
END NOT_NULL
FROM
RDB$RELATION_FIELDS R
JOIN RDB$FIELDS F ON R.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME
JOIN RDB$TYPES T ON F.RDB$FIELD_TYPE = T.RDB$TYPE AND T.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
WHERE
R.RDB$SYSTEM_FLAG = 0 --не системные
ORDER BY
R.RDB$RELATION_NAME,
R.RDB$FIELD_POSITION
;
(этот код привязан к моим тулзам и без них не скомпилируется, но смысл ясен)
Код: Выделить всё
//описание поля
String TDM::FieldDescription(String table, String field)
{
IBSQLHolder sql = new_sql(
"SELECT DESCRIPTION\n"
"FROM FIELDS\n"
"WHERE TABLE_NAME=:TN AND NAME=:FN"
);
QX(sql).Param("TN", table).Param("FN", field).Exec();
String D = StringField(sql, "DESCRIPTION");
return D;
}