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

Как узнать имя типа поля?

Добавлено: 23 мар 2004, 13:01
__nogc
Суть вопроса: есть таблица X$FIELDS (Таблица полей). В этой таблице есть поле - XE$DATATYPE (код типа - например, для типа "String" в этом поле соответствующий код равен 12-ти).
Так вот: есть какая-нибудь функция или таблица, из которой можно получить соответствие:
код типа <-> имя типа
то есть что-то вроде функции GetTypeName(word): string;
которая вернула бы результат:
GetTypeName(12) = "String"

а?

Re: Как узнать имя типа поля?

Добавлено: 23 мар 2004, 14:23
Goblin
Пособие по SQL в Support'е, приложение ...

Re: Как узнать имя типа поля?

Добавлено: 25 мар 2004, 12:29
wildman
Когда-то написал такой скрипт, чтобы формировать список полей в таблице:

! создание описания структуры таблицы
select X$FIELDS.xe$Name,X$FIELDS.xe$title,X$FIELDS.xe$size,
if(X$FIELDS.XE$DATATYPE= 0,'Void ',
if(X$FIELDS.XE$DATATYPE= 1,'Boolean ',
if(X$FIELDS.XE$DATATYPE= 2,'Char ',
if(X$FIELDS.XE$DATATYPE= 3,'Byte ',
if(X$FIELDS.XE$DATATYPE= 4,'Word ',
if(X$FIELDS.XE$DATATYPE= 5,'Integer ',
if(X$FIELDS.XE$DATATYPE= 6,'LongInt ',
if(X$FIELDS.XE$DATATYPE= 7,'Date ',
if(X$FIELDS.XE$DATATYPE= 8,'Time ',
if(X$FIELDS.XE$DATATYPE= 9,'Pointer ',
if(X$FIELDS.XE$DATATYPE=10,'Single ',
if(X$FIELDS.XE$DATATYPE=11,'Double ',
if(X$FIELDS.XE$DATATYPE=12,'String ',
if(X$FIELDS.XE$DATATYPE=13,'ZString ',
if(X$FIELDS.XE$DATATYPE=14,'LVar ',
if(X$FIELDS.XE$DATATYPE=15,'Buffer ',
if(X$FIELDS.XE$DATATYPE=16,'AutoInc ',
if(X$FIELDS.XE$DATATYPE=17,'Comp ',
if(X$FIELDS.XE$DATATYPE=18,'DateTime ',
if(X$FIELDS.XE$DATATYPE=19,'Array ',
if(X$FIELDS.XE$DATATYPE=20,'TabArray ',
if(X$FIELDS.XE$DATATYPE=21,'Record ',
if(X$FIELDS.XE$DATATYPE=22,'Reference',
if(X$FIELDS.XE$DATATYPE=23,'AnyArray ','<-no->'))))))))))))))))))))))))
where (( 'plpor' == x$files.xf$Name and
x$Files.xf$code == X$FIELDS.XE$FILECODE ));