PDA

Ver la Versión Completa : Inaceptable !! Con Oracle, "dbExpress driver does not support the TDBXTypes.FLOAT


rolandoj
22-05-2008, 04:36:42
Hola,

De todos los problemas que me he encontrado con Delphi 2007 y dbExpress, este es el que más me ha impactado (bueno, estoy verificando otro peor).

Aunque he encontrado una solución, espero que alguién pueda sugerir una mejor porque la que encontré, aunque funciona, es muy inadecuada

Veamos:

Tengo Delphi 2007 Version 11.0.2804.9245. Las pruebas las estoy haciendo con Oracle 10g y el driver dbExpress para Oracle es dbxora30.dll

El problema ocurre cuando trato de insertar un registro que tiene campos numéricos. El sistema me devuelve este error :


dbExpress driver does not support the TDBXTypes.FLOAT data type. Vendor error message: ORA-01036: illegal variable name/number.


Ese error ocurre en una aplicación que ejecuta perfectamente el comando Insert del caso bajo Interbase y Firebird con dbExpress, y cuya versión previa también lo ejecuta sin problemas usando BDE.

Para aislar el problema he creado una pequeña tabla cuya definición es :

CREATE TABLE MITABLA
(MICODIGO varchar2(14) NOT NULL,
MIVALOR NUMBER NOT NULL,
CONSTRAINT MITABLA_PK PRIMARY KEY (MICODIGO)
) tablespace datosprueba;

Sobre esa tabla, intento ejecutar el siguiente comando con un TSQLQUery :

INSERT INTO MITABLA
(MICODIGO,MIVALOR)
VALUES(:ACode,:AValue)

El parámetro AValue está definido en el DFM así :


item
DataType = ftFloat
Name = 'AValue'
ParamType = ptInput
end>


Y el respectivo TParam se asigna en código así :

SQLPrueba.Params[1].AsFloat := 123.45;

Aún en un esquema sencillo como este, el sistema genera el error mencionado !!!

Por otra parte, a prueba y error, encontré una solución consistente en usar BCD en lugar de Float; pero esto implica cambiar a :

SQLPrueba.Params[1].AsBCD := 123.45;

En todas las partes en que se usen los parámetros. Esta solución simplemente no tiene presentación.

Lo más insólito es que, investigando en Internet, he encontrado que el error fué reportado en Delphi 7 con Oracle 8. En aquel entonces, la muchacha que lo reportó había encontrado la misma solución que yo; pero alguién le dijo que aunque no tenían un parche, no hacía falta recodificar y le pasó el código fuente de una versión corregida de la unidad SQLExpr. A pesar de ese antecente, a estas alturas el error parece persistir.

Agradezco cualquier ayuda que brinde una solución diferente, quizás un cambio en la configuración del driver, o usar un driver diferente.