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)
-   -   Equivalencia campo mysql e interbase (https://www.clubdelphi.com/foros/showthread.php?t=68218)

David82 01-06-2010 14:22:41

Equivalencia campo mysql e interbase
 
Hola a todos, he pasado una base de datos mysql a interbase con la intencion de utilizarla en un programa que ya tengo funcionando, pero en algunos campos me da errores, como por ejemplo los tipo DATE en mysql los tengo que pasar a TIMESTAMP en interbase. Alguien sabe la equivalencia entre otros tipos de datos? Porque al pasar un tipo DOUBLE a DECIMAL me da el siguiente fallo:

Client SQL dialect 1 does not support reference to 64-bit numerical datatype

He probado con DECIMAL y NUMERIC, y con varias precisiones pero no hay manera.

Un saludo!

Casimiro Notevi 01-06-2010 14:26:46

Prueba a usar campos "double" para los números.
Las fechas no sé con seguridad, aunque con firebird que es muy parecido, existen 3 tipos: date, time y timestamp... donde se almacenan fechas, horas y fechashoras... respectivamente.
Ten en cuenta que con interbase/firebird existen el dialecto 1 y el 3. Con el dialecto 1 sólo existen campos date que almacenan fecha y hora juntos.
Sin embargo con dialecto 3 existen los 3 tipos que te he referenciado antes.

David82 01-06-2010 14:34:24

Perdona pero soy un poco nuevo, para cambiar entre dialectos como puedo hacerlo?

Muchas gracias.

Casimiro Notevi 01-06-2010 14:51:18

Puedes cambiarlo con la utilidad gfix, la encontrarás en el directorio 'bin' de interbase/firebird.
Aquí tienes un sencillo tutorial en formato pdf con los parámetros que acepta.

También creo recordar que se puede cambiar mediante sentencia sql, algo así como:
Código SQL [-]
set dialect 3

David82 02-06-2010 10:47:21

He utilizado el gfix, no me ha dado ningún error pero tampoco me ha solucionado el problema, me continua dando el mismo error.
También he probado con la sentencia en el editor SQL y me da el siguiente mensaje:

Código:

Executing of script failed
Format '%d' invalid or incompatible with argument

Y por último probé a cambiar el campo a double precision y me da:

Código:

Unsuccessful metadata update
Cannot change datatype for DEBE. Conversion from base type 64-bit numeric to DOUBLE PRECISION is not supported

Cuando ejecuto en el IBconsole la sentencia sql que da problemas en el programa la hace bien, por lo que pienso que el problema estará a la hora de interpretar los datos por parte del delphi, tal vez en los campos de la query, que los tengo definidos como TFloatField


La franja horaria es GMT +2. Ahora son las 16:24:48.

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