Campos persistentes y tipos de datos float

Y te expongo el contexto de mi problema:
Estoy desarrollando una aplicación Delphi/Firebird para registrar pagos. Me conecto con el controlador nativo del BDE para bases de datos Interbase y utilizo Dialect 2.
Para los importes, tengo declarados campos en la bd como sigue:
ABOImporte DECIMAL(8,2)
Realizo la inserción desde Delphi utilizando queries actualizables y campos persistentes importados del query en tiempo de diseño con el editor de campos, por lo que mi código no lo escribo de la forma:
tabla.fieldbyname('campo').astipo:=valor;
sino mas bien
campopersistente.astipo:=valor;
Entonces, el problema es que al generar los campos persistentes, Delphi toma cualquier dato de tipo numérico proveniente de la bd como TIntegerField; por tanto, cualquier flotante es convertido a entero y la parte fraccionaria se pierde. Probé con la sintaxis completa:
tabla.fieldbyname('campo').astipo:=valor;
Y obtengo el mismo resultado, enteros en lugar de flotantes.
¿Qué me sugieres a este respecto?
Respuesta
1
Lo que realizas tu, lo llevo realizando yo desde hace algún tiempo, pero nunca he utilizado el bde, para conectar firebird con delphi, es mucho mejor utilizar IBX, ya que se hicieron específicamente para conectar delphi con interbase/firebird. Tu problema puede ser por esto o también por el dialecto que utilizas, yo de ti utilizaría el dialect 3, que seguro que admite las definiciones N10, 2 y otras similares a esas.
Gracias por la sugerencia, aunque desafortunadamente no puedo usar IBX ya que mi desarrollo está pensando para funcionar con más de una bd, es por eso que uso el BDE. Sin embargo, sí me ayudaría saber de qué manera puedo cambiar el dialecto de la sesión desde Delphi. ¿Alguna idea?
Vamos a ver, el dialecto se establece en la BD al crearse esta, desde delphi con el BDE sinceramente nunca lo he hecho, pero supongo que tu al acceder vía BDE lo que haces antes es crear una conexión ODBC y es en ese punto donde le debes de decir que use el dialecto con el que creaste la BD (! Ojo si la creaste con dialecto 1 no accedas con el 3, ya que te daría problemas!).
Si lo hicieras con las IBX el dialecto lo pondríamos en el delphi ya que los ibx se comunican directamente con firebird evitando tramites intermedios.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas