Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   type mismatch for field 'Factura_Inicio', expecting:float actual: string. (https://www.clubdelphi.com/foros/showthread.php?t=36004)

chileno 28-09-2006 18:26:08

type mismatch for field 'Factura_Inicio', expecting:float actual: string.
 
hola ...a todos :D

tengo la sgte sentencia SQL almacenada en un Query :
Código SQL [-]
select  
numeracion.id_almacen,
numeracion.id_documento,
almacen.id_almacen,
almacen.direccion,
almacen.ciudad,    
sum(if(id_Documento=1,folio_inicio,null)) as Factura_Inicio,            
sum(if(id_Documento=1,folio_termino,null)) as Factura_Termino,
sum(if(id_Documento=1,folio_actual,null)) as Factura_actual,
sum(if(id_Documento=2,folio_inicio,null)) as Boleta_Inicio,   
sum(if(id_Documento=2,folio_termino,null)) as Boleta_Termino, 
sum(if(id_Documento=2,folio_actual,null)) as Boleta_actual,
sum(if(id_Documento=3,folio_inicio,null)) as Guia_Inicio,
sum(if(id_Documento=3,folio_termino,null)) as Guia_termino,
sum(if(id_Documento=3,folio_actual,null)) as Guia_actual,
sum(if(id_Documento=4,folio_inicio,null)) as Credito_Inicio, 
sum(if(id_Documento=4,folio_termino,null)) as Credito_termino,
sum(if(id_Documento=4,folio_actual,null)) as Credito_actual,
sum(if(id_Documento=5,folio_inicio,null)) as Debito_Inicio,
sum(if(id_Documento=5,folio_termino,null)) as Debito_termino,
sum(if(id_Documento=5,folio_actual,null)) as Debito_actual
from          almacen
inner         join numeracion
on            almacen.id_almacen = numeracion.id_almacen
group by    almacen.id_almacen
el problema surge cuando llevo mi aplicacion a otro pc y al ejecutar dicha sentencia me arroja el sgte error(desarrollo en los dos pc mi aplicacion con delphi 7 en ambos, pero con mysql de distinta version 4.0 y 5.0):
tbCorrelativo:Type mismatch for field 'Factura_Inicio', expecting: Float actual:String.

lo que veo es que en el editor de campos (para un pc), los campos en problema toma el tipo stringfields y al depurar este problema en el otro pc, este mismo campo toma el valor Floatfields.

al parecer es por la version de la base de datos...creo yo...y me gustaria asi alguien me dijiera si estoy en buen paso o es otra cosa:cool:

roman 28-09-2006 18:37:29

¿Qué tipo de datos tiene el campo folio_inicio?

// Saludos

chileno 28-09-2006 18:58:51

hola roman

el campo Folio_inicio en su tabla original (numeracion) es integer unsigned, tambien para folio_ temino, folio_actual.

roman 28-09-2006 20:39:02

Pues es muy raro. ¿Qué componentes usas? ¿En qué versión de MySql se ven como String, en la 4 o la 5?

// Saludos

chileno 28-09-2006 23:06:33

hola roman.....
disculpa por la demora
utilizo zeos 6.1.5 stable y con la version 5 de mysql.

roman 28-09-2006 23:11:14

Pues es que no tiene pies ni cabeza. Un Sum debiera producir un Float o en todo caso un Integer, pero ¿cómo puede producir un String?

No me has contestado en qué versión de MySql es donde se genera un StringField.

Ahora- aunque no pareciera ser necesario -¿qué pasa si obligas el tipo de datos en la consulta?

Código SQL [-]
...
sum(if(id_Documento=1,folio_inicio,null)) + 0 as Factura_Inicio,
...

Al sumar el 0, si no mal recuerdo, obligas a MySql a convertir el dato a entero o numérico.

// Saludos

maeyanes 28-09-2006 23:37:26

Ahora bien, la estructura de las bases de datos es la misma en ambos servidores?

Puede que en una base de datos la tabla en cuestión tenga ese campo como Float y en la otra lo tenga como string.


Saludos...

chileno 29-09-2006 00:01:43

roman...genera un stringfield con mysql 5 y voy probar eso de adicionar un valor 0 para obligar que el tipo de dato sea numerico, y la estructura de datos en ambas DB son del tipo entero (folio_inicio, folio_termino, folio_actual).

chileno 29-09-2006 00:05:18

No hay caso, de igual forma, genero un TStringField a los dichosos campos.
:confused:

chileno 29-09-2006 17:47:18

Como acotación, probe con otros componentes (ADO, DBE) y todo bien.
con ADO me entrega un tipo de datos TBCDField y DBE un TFloatFields, al parecer es un problema con zeos...voy instalar nuevamente los componentes zeos para ver que pasa.

chileno 29-09-2006 18:47:15

Bueno ....cerrando este tema. creo saver lo que pasa, bueno....si alguien me dice lo contrario..... hice pruebas accesando desde un pc remoto a la DB MYSQL 5 con zeos, me da el mismo problema, y desde el pc con la DB MYSQL 5 acccesando a un pc remoto (otro) con DB MYSQL 4 no me da ningun problema, que mas puedo decir, utilizo zeos 6.1.5_stable que no tiene el protocolo para MYSQL 5, pero igual lo conecto.....como resumen no hay compatibilidad con estos componentes y la nueva version de MYSQL.:mad:


La franja horaria es GMT +2. Ahora son las 22:14:02.

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