Вот мой вариант (вообще а не для IBX)
if (Data^.sqlscale = 0) and (Data^.sqlsubtype = 0) then FieldDef.DataType := ftLargeint else if (Data^.sqlscale >= -4) then begin FieldDef.DataType := ftBCD; FieldDef.Precision := 18; FieldDef.Size := -Data^.sqlscale; end else FieldDef.DataType := ftFloat;