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 (

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