Gracias por la referencia, Javier. Aunque ya no reconozco casi nada de ese código que has puesto.
Aprovecho para dejarles la vista que uso en las bases de datos Firebird. Me ayuda a encontrar detalles de un campo, sobre todo cuando solamente recuerdo su nombre pero no en qué tabla está.
Código SQL
[-]
CREATE VIEW VWCAMPOS(
TABLA,
CAMPO,
POSICION,
DESCRIPCION,
TIPO,
TAMAO,
DECIMALES,
PERMITENULOS)
AS
Select
RF.RDB$Relation_Name,
RF.RDB$Field_Name,
RF.RDB$Field_Position,
RF.RDB$Description,
Case F.RDB$Field_Type
When 261 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Texto BLOb'
Else 'BLOb'
End
When 14 Then 'Texto Char'
When 40 Then 'Texto CString'
When 11 Then 'Numérico D_Float'
When 27 Then 'Numérico Double'
When 10 Then 'Numérico Float'
When 16 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero Int64'
End
When 8 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero Integer'
End
When 9 Then 'Quad'
When 7 Then
Case F.RDB$Field_Sub_Type
When 1 Then 'Numérico'
When 2 Then 'Decimal'
Else 'Entero SmallInt'
End
When 12 Then 'Fecha Date'
When 13 Then 'Hora Time'
When 35 Then 'Fecha y hora TimeStamp'
When 37 Then 'Texto Varchar'
End,
Case F.RDB$Field_Type
When 14 Then F.RDB$Field_Length
When 11 Then F.RDB$Field_Precision
When 27 Then F.RDB$Field_Precision
When 10 Then F.RDB$Field_Precision
When 16 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 8 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 7 Then
Case F.RDB$Field_Sub_Type
When 1 Then F.RDB$Field_Precision
When 2 Then F.RDB$Field_Precision
End
When 37 Then F.RDB$Character_Length
End,
Case F.RDB$Field_Scale
When 0 Then Null
Else Cast (F.RDB$Field_Scale * -1 As SmallInt)
End,
Case RF.RDB$Null_Flag
When 1 Then 'No'
Else 'Si'
End
From RDB$Relation_Fields RF
Left Join RDB$Fields F On RF.RDB$Field_Source = F.RDB$Field_Name
Where RF.RDB$System_Flag = 0;
Saludos.
Al González.