PDA

Ver la Versión Completa : DBExpress (Delphi2006) y oracle9i


Migmam2
15-09-2006, 11:05:12
Hola a todos,

Estoy utilizando actualmente Delphi2006 y oracle9i y quisiera comentar algunos problemas que he visto por si son alucinaciones mias o realmente es así.

Primero. Hay reportado un Bug en Borland (Report #29269) el cual he podido comprobar y es que los campos CLOB al hacer applyupdates pierden el último caracter. A día de hoy creo que esto sigue sin resolverse.

Segundo. Anteriomente he trabajado con MySQL y al eliminar un registro mediante clientdataset.delete el registro se eliminaba correctamente aun cuando ese clientdataset estuviera vinculado a un sqlquery que contuviera una sentencia SELECT con INNER.
En el caso de Oracle y al inspeccionar los mensajes con SQLMonitor veo que trata de eliminar el registro utilizando en la clausula WHERE los campos pertenecientes a la segunda tabla relacionada y por consiguiente falla.
Ejemplo.
Tabla clientes:
id_cliente
cliente
id_tipo_cuenta

Tabla tipos_cuenta
id_tipo_cuenta
tipo_cuenta

sqlquery1.sql.text:='SELECT * FROM clientes INNER JOIN tipos_cuenta USING (id_tipo_cuenta)';

Al eliminar veo en SQLMonitor
DELETE clientes WHERE id_cliente=x AND id_tipo_cuenta=y AND tipo_cuenta=z

Error: el campo tipo_cuenta no existe en clientes
¿Alguna idea?

Migmam2
20-09-2006, 18:35:52
¿Alguien ha probado el uso de parámetros en SQLQuery en Oracle?

jachguate
20-09-2006, 20:00:37
En los campos persistentes del query de origen, para el campo Tipo_Cuenta podes modificar la propiedad ProviderFlags, quitando los valores pfInUpdate y pfInWhere, de esta manera el provider no tendrá problemas para construir la sentencia de borrado (o de actualización).

Hasta luego.

;)

Migmam2
21-09-2006, 09:15:04
Muchas gracias. Probado y funciona!!

Saludos