Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas al eliminar registros con TADOConnection (https://www.clubdelphi.com/foros/showthread.php?t=37559)

jplj 16-11-2006 15:03:21

Problemas al eliminar registros con TADOConnection
 
Hola:

Estoy empleando un TADOCommand para mandar comandos a una tabla llamada Registros, sus campos entre otros son :

Id: numérico sin duplicados
nombre: String.

La forma de empelear TADOCommand es ...

Código Delphi [-]
         Comando_1.CommandText:= strSQL
         Comando_1.Parameters[0].Value:= ... ;
                        ...
         Comando_1.Parameters[n].Value:= ... ;
         Comando_1.Execute;

De esta forma hasta ahora he mandado comandos de insercción, actulización y eliminación sin problemas.

Ahora pretendo eliminar aquellos registros cuyo Id sea un valor determinado o cuyos nombres se correspondan con una mascara dada. Para ello he probado con varias instrucciones:

La primera fue:
Código SQL [-]
DELETE Registros.* FROM Registros WHERE (Id = :P0) OR (nombre LIKE :P1)

Al comprobar que sólo eliminaba el registro que cumplia la primera condición, y tras varias pruebas dedidí ponerla literal:

Código SQL [-]
DELETE Registros.* FROM Registros WHERE (Id =1200) OR (nombre LIKE "zz_*")

Obteniendo identico resultado, me elimina el registro cuyo id = 1200.

Otra que me producia lo mismo fue:
Código SQL [-]
DELETE Registros.* FROM Registros WHERE (Id =1200) OR (Id IN (SELECT Id FROM Registos WHERE LIKE "zz_*"))

He probado con
Código SQL [-]
DELETE Registros.* FROM Registros WHERE (nombre LIKE "zz_*")

Y en este caso no me elimina ninguno.


Por último y para comprobar si por alguna razón no se podían eliminar más de un registro a la vez (:confused: no me pregunteís porqué he llegado a pensar eso):
Código SQL [-]
DELETE Registros.* FROM Registros WHERE (Id=1200) OR (Id=1201)
En este caso me elimina los dos.

A todo esto, desde Acces he comprobado cada una de las consultas y daban los resultados esperados. Borraban todos los registros que cumplian una de las dos condiciones.

¿Alguna sugerencia?

Gracias de antemano.

Escusas por el título, no es TADOConnection sino TADOCommand.





Base de Datos: Microsof Acces 2000 y 97

aom 16-11-2006 15:13:47

Hola,
Código Delphi [-]
DELETE Registros.* FROM Registros WHERE (Id =1200) OR (nombre LIKE ""zz_*")

Creo que el problema está con el asterisco (*). Cuando trabajas con los componentes ADO creo que hay que utilizar % . Tu consulta sería

Código Delphi [-]
DELETE Registros.* FROM Registros WHERE (Id =1200) OR (nombre LIKE ""zz_%")

Saludos

jplj 16-11-2006 15:21:58

:( , no ...

jplj 17-11-2006 10:22:41

Muchas gracias aom.

Hoy con la "mente" despejada he comprobado que aom estaba en lo cierto.

De nuevo gracias.


La franja horaria es GMT +2. Ahora son las 23:21:47.

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