Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Unhappy Inaceptable !! Con Oracle, "dbExpress driver does not support the TDBXTypes.FLOAT

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 :

Código SQL [-]
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 :

Código SQL [-]
INSERT INTO MITABLA
(MICODIGO,MIVALOR)
VALUES(:ACode,:AValue)

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

Código Delphi [-]
      item
        DataType = ftFloat
        Name = 'AValue'
        ParamType = ptInput
      end>

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

Código Delphi [-]
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 :

Código Delphi [-]
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.
Responder Con Cita
Respuesta



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
driver dbxdb230.dll para delphi 2007 en dbexpress kokud Conexión con bases de datos 2 24-04-2008 15:59:21
Como agregar el driver de access en DBExpress Conections.. yair_bautista Conexión con bases de datos 0 26-09-2006 23:08:33
Driver Nativo de Oracle jfontane Oracle 0 22-10-2004 04:59:05
Necesito deshabilitar el mensaje: "At least one service or driver failed during..." sarackganda Windows 0 15-04-2004 05:40:35
free DBExpress driver raul parra Noticias 1 05-01-2004 11:00:24


La franja horaria es GMT +2. Ahora son las 01:10:54.


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
Copyright 1996-2007 Club Delphi