A partir de las tablas de sistema de Interbase/Firebird puedes conocer a partir del nombre del campo y la tabla a la que pertenece toda la información. En concreto el tipo y el tamańo del campo (si aplica).
Por ejemplo una consulta como esta te devolverá información sobre el campo1 de la tabla1
Código SQL
[-]
SELECT r.RDB$RELATION_NAME as table_name,
r.RDB$FIELD_NAME AS field_name,
r.RDB$DEFAULT_VALUE AS field_default_value,
f.RDB$FIELD_LENGTH AS field_length,
f.RDB$FIELD_TYPE AS field_type
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
where r.RDB$FIELD_NAME='campo1' and r.RDB$RELATION_NAME='Tabla1'
Segun lo que te devuelva el tipo (entero):
-->261 = 'BLOB'
-->14 = 'CHAR'
-->40 = 'CSTRING'
-->11 = 'D_FLOAT'
-->27 = 'DOUBLE'
-->10 = 'FLOAT'
-->16 = 'INT64'
-->8 = 'INTEGER'
-->9 = 'QUAD'
-->7 = 'SMALLINT'
-->12 = 'DATE'
-->13 = 'TIME'
-->35 = 'TIMESTAMP'
-->37 = 'VARCHAR'