Hola estoy tratando de desarrollar una aplicacion en 3 capas con datasnap y utlizando los dbexpress. Mi idea es que esta aplicacion pueda utilizar cualquier base de datos. Definiendo en un fichero ini los parametros necesarios conectará con una y con otra.
Pues hasta aqui todo perfecto pero ahora tengo un problema con los tipos de datos entre ORACLE Y FIREBIRD. Un tipo de dato entero dbexpress para firebird lo trata como Int32Type mientras que en Oracle seria BcdType . Esto es un problema cuando añades los campos al fieldeditor ya que si quieres cambiar de una base de datos a otra da un error precisamente con la conversion de tipos.
Curisoamente con MYSQL, MS SQL, FIREBIRD E INTERBASE no hay problema ya que los trata como Int32Type pero con ORACLE si.
¿Alguna idea para solucionar este problema?
Muchas gracias y un saludo

Desarollo aplicacion datasnap ORACLE/FIREBIRD
Comenzado por
agidar
, jun 07 2011 08:53
4 respuestas en este tema
#1
Escrito 07 junio 2011 - 08:53
#2
Escrito 07 junio 2011 - 09:46
Hola.
Esto apunta a un fallo en los drivers de Oracle.
¿ Has probado los distintos tipos enteros que pueda tener Oracle ?. Quizás tipos como el Smallint (o similar), tienen suficiente capacidad para tus necesidades y el driver dbexpress los reconoce correctamente.
Saludos.
Esto apunta a un fallo en los drivers de Oracle.
¿ Has probado los distintos tipos enteros que pueda tener Oracle ?. Quizás tipos como el Smallint (o similar), tienen suficiente capacidad para tus necesidades y el driver dbexpress los reconoce correctamente.
Saludos.
#3
Escrito 07 junio 2011 - 10:00
http://docwiki.embar...orted_Databases
Aqui viene bien claro el mapeo de tipos
Este problema me impide tener la misma aplicacion funcionando contra las dos bases de datos.
Aqui viene bien claro el mapeo de tipos
Este problema me impide tener la misma aplicacion funcionando contra las dos bases de datos.
#4
Escrito 07 junio 2011 - 10:24
Saludos.
Con eso tengo que lidiar a diario, no precisamente con los DBX, en mi caso con los componentes del BDE (sí, en la empresa todavía utilizamos BDE).
La manera más "simple" de lidiar con esto es no utilizar persistencia osea no añadir los campos en el Field Editor; y referirse a los campos vía el método FieldByName.
Aclaro que no tengo a manos ningún desarrollo a 3 capas por lo que no sé si esa solución es factible.
Con eso tengo que lidiar a diario, no precisamente con los DBX, en mi caso con los componentes del BDE (sí, en la empresa todavía utilizamos BDE).
La manera más "simple" de lidiar con esto es no utilizar persistencia osea no añadir los campos en el Field Editor; y referirse a los campos vía el método FieldByName.
Aclaro que no tengo a manos ningún desarrollo a 3 capas por lo que no sé si esa solución es factible.
#5
Escrito 07 junio 2011 - 11:03
http://docwiki.embar...orted_Databases
Aqui viene bien claro el mapeo de tipos
Este problema me impide tener la misma aplicacion funcionando contra las dos bases de datos.
Este cuadro es incompleto, no viene ningún tipo entero para Oracle. El tipo number, por ejemplo, es un tipo decimal, y por eso lo mapea a BCD.
A mi me sigue pareciendo un bug del driver. ¿ Has probado algún driver dbExpress de terceros ?
http://www.devart.com/dbx/oracle/
Hay un proyecto antiguo, dbExpress Plus, que te permitía personalizar los mapeos de tipos de los campos, pero veo que no se ha actualizado en mucho tiempo.
http://dbexpressplus.sourceforge.net/
Saludos.