Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2017
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 24
Poder: 0
usuario1000 Va por buen camino
Type mismatch for field

Hola a todos.

Estoy realizando una aplicacion dataSnap (Cliente-Servidor) con delphi 10 Seatle y cuando llego a una parte determinada del programa de que me tiene que mostrar en un DBGrid los datos de una tabla me sale el siguiente error:
"Type mismatch for field 'PRESUPUESTO', expecting: BCD actual: FMTBcdField."

No se como arreglarlo. Utilizo FireBird 2.5. He creado el campo PRESPUESTO como NUMERIC(12,2).

Lo cierto es que me da el problema cuando intento dar formato al campo para que se visualice en el DBGRiD con los puntos y las comas, porque si no llamo al campo, funciona la aplicación sin problemas, pero no se muestra el campo con formato. (Ejemplo 1585.85 se mostraría como 1,585.85).

Agradecería ayuda, porque estoy atascado en este punto. He leido algo por ahí pero no me aclara nada.

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 14-03-2017
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 977
Poder: 12
ElKurgan Va por buen camino
¿Qué componentes de acceso a datos usas? ¿DbXpress? ¿Firedac? ¿OTros?

A mi en DBXpress me ha aparecido a veces ese error, pero se corregía cogiendo el editor de campos de la tabla, eliminando el campo y volviéndolo a recargar...

El motivo por el que hacía eso lo desconozco, la verdad, pero se me arreglaba recargando los datos de campos

Tampoco he usado la versión Seatle, eso me pasó en XEn, por lo que a lo mejor tampoco es tu caso

Saludos
Responder Con Cita
  #3  
Antiguo 14-03-2017
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 24
Poder: 0
usuario1000 Va por buen camino
Utilizo Firedac, ayer estuve quitando y añadiendo los campos muchas veces y no se arreglaba nada, incluso intenté cambiar el tipo en la base de datos de numeric a Float pero no me lo permitía el SQL Manager Lite.

Saludos
Responder Con Cita
  #4  
Antiguo 14-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.783
Poder: 8
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Yo creo que el problema esta en como interpreta FireDAC estos campos. Esto lo podes solucionar estableciendo las reglas para mapear los campos

Revisa esto:

FireDAC Data Type Mappings


Y lee el punto 6 de BDE Application Migration

Estoy seguro de que habia un seminario online pero no lo encuentro rapidamente, deberia estar en el canal de Embarcadero

Al parecer esta interpretando tu campo como un TBCDField cuando a lo mejor necesitas un currency o un double

BCD = Binary coded decimal. Documentacion
Responder Con Cita
  #5  
Antiguo 14-03-2017
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 24
Poder: 0
usuario1000 Va por buen camino
Gracias por vuestras respuestas.

Gracias especialmente a AgustinOrtu, aunque tanta información que me has facilitado me ha acomplejado un poco.

Al final lo he solucinado, ¿como?, pues después de probar y combinar muchas cosas, al final ha tocado la flauta de la siguiente forma:

Me fuí a la base de datos y modifique la tabla en cuestión y todos los campos que estaban definidos en Firebird como NUMERIC(8,2), les he cambiado el tipo de dato poniendolos a FLOAT, y problema resuelto.

He vuelto a llamar a los campos persistentes y funcionando. No se si es la opción mas profesional de arreglarlo, pero al menos me permite seguir.

Lo dicho gracias a todos.
Responder Con Cita
  #6  
Antiguo 14-03-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.324
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por usuario1000 Ver Mensaje
... todos los campos que estaban definidos en Firebird como NUMERIC(8,2), les he cambiado el tipo de dato poniendolos a FLOAT, y problema resuelto.
Eso te traerá un problema añadido, los campos float no tienen "precisión", así que cuando hagas cálculos no se guardarán valores "correctos", ejemplo figurado, 10/3=3.33333333333 pero seguramente te guardará: 3.32 o algo similar, así que no te interesa si son campos con los que harás cálculos.
Responder Con Cita
  #7  
Antiguo 15-03-2017
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 24
Poder: 0
usuario1000 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Eso te traerá un problema añadido, los campos float no tienen "precisión", así que cuando hagas cálculos no se guardarán valores "correctos", ejemplo figurado, 10/3=3.33333333333 pero seguramente te guardará: 3.32 o algo similar, así que no te interesa si son campos con los que harás cálculos.
Hola Casimiro.

Llevas razón, pero es que no se me ocurre otra cosa para avanzar. Cada vez que realice cálculos haré redondeos, no obstante, voy a probar a cambiar a otro tipo de datos en los campos a ver si tengo suerte y no me da el "dichoso" error.

Gracias por tu apreciación.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error: type mismatch Nicolas_2011 Varios 5 01-01-2013 23:43:14
type mismatch for field 'Factura_Inicio', expecting:float actual: string. chileno Conexión con bases de datos 10 29-09-2006 17:47:15
Error: Type mismatch in expression gusanita Varios 11 28-01-2006 18:12:17
type mismatch in expression noe SQL 1 12-02-2005 02:41:26
Query: Type Mismatch in Expresion jdangosto SQL 2 01-10-2004 08:21:38


La franja horaria es GMT +2. Ahora son las 05:43:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi