Tipos BCD y FMTBCD en 10.3 Río

Aspectos teóricos

La versión 10.3 de Delphi y C++ trajo una serie de optimizaciones en RTL y también en el área de acceso a datos. Muchos drivers han sido actualizados y / o optimizados, como podemos observar en la lista de novedades de esta versión.

Entre ellas, se realizó un ajuste en la asignación de los campos de tipo BCD y FMTBCD. Podemos decir que a partir del 10.3, la definición entre BCD y FMTBCD sigue los estándares definidos para este dos tipos de datos, lo que no ocurría en versiones anteriores de acuerdo con la base de datos utilizada.

Haciendo un resumen, el BCD (binary-coded decimal) proporciona mayor precisión y exactitud que los números de punto flotante. Su empleo se determinará en función del tipo de datos y de la precisión definidos en la base de datos.

La diferencia entre BCD (técnicamente TBCDField) y FMTBCD (técnicamente TFMTBCDField) está directamente relacionada con el número de decimales y dígitos significativos empleados.

Un BCD soportará números con hasta 20 dígitos significativos y 4 decimales. Además, se utilizará un FMTBCD. En la práctica, internamente, el BCD será tratado como un “Currency” por cuestiones de rendimiento, y un FMTBCD será efectivamente un binary-coded decimal en el aspecto estricto de su definición.

Posibles impactos en su proyecto

Si por ventura, en una migración de versión para el 10.3 Río, su aplicación “reclamar” de que los campos anteriormente asignados como BCD ahora deberían ser FMTBCD, eso se debe a las optimizaciones antes mencionadas.

Para mantener todo lo que estaba, es decir, que Delphi y C ++ continúen asignando los campos como BCD, y no traten de llevarlos a FMTBCD, puede ajustar las siguientes configuraciones en FireDAC:

1) ajuste la propiedad FDQuery.FormatOptions.MaxBcdPrecision a un valor superior al predeterminado, como 20 por ejemplo.

2) ajuste la propiedad FDQuery.FieldOptions.UpdatePersistent a True

En teoría, todo lo que estaba funcionando correctamente así permanecerá, sin perjuicio para su proyecto. Para nuevos proyectos o adiciones de nuevos conjuntos de datos, es recomendable adoptar el mapeo por defecto generado por la herramienta.

screen shot 2019-01-12 at 20.51.44

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s