Tengo dos tablas: Tabla1 (Con un campo: Código) y Tabla2 (con dos campos:
Código y Venta)
Tengo la siguiente consulta para eliminar registros de Tabla1 que no tengan
ventas en Tabla2:
DELETE Tabla1.Código
FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Código = Tabla2.Código
WHERE Tabla2.Venta Is Null;
Al ejecutar la consulta me sale este error:
‘Especifique la tabla que contiene los registros que desea eliminar. (Error
3128)’
Alguna idea.
Gracias por adelantado.
Saludos. César.
Salu2
--
José Mª Fueyo
[MS MVP Access]
Ayer en otro foro, di respuesta a algo parecido, una consulta de eliminación
en la que queremos eliminar los no coincidentes entre dos tablas.
La solución que propuse adaptada a este caso, y suponiendo que codigo (sin
acento) es un campo de texto es:
DELETE Tabla1.codigo, DLookUp("codigo","tabla2","codigo = '" & [codigo] &
"'") AS aa
FROM Tabla1
WHERE (((DLookUp("codigo","tabla2","codigo = '" & [codigo] & "'")) Is
Null));
El problema que se me planteaba ayer es que la consulta de selección sale
bien, me determina los registros a borrar, pero al hacerla de eliminación y
querer ejecutarla me dice:
Especifique la tabla que contiene los registros que desea eliminar
Ahora he probado con tu propuesta y no me funciona.
Con la consulta que tu propones al querer ver los registros que selecciona
me dice:
La consulta debe tener como mínimo un campo de destino
Al intentar ejecutarla me dice:
Especifique la tabla que contiene los registros que desea eliminar
¿Me estoy complicando la vida?
¿Nos puedes ayudar?
SALUDOS.
Julián-Valencia-España
http://www.tinyurl.com/julianvalencia
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje
news:4ED75755-829C-4762...@microsoft.com...
Gracias por tu respuesta.
Modificando un pelín tu respuesta (código es numérico) parece que funciona.
DELETE Tabla1.Código AS Expr1, DLookUp("Código","Tabla2","Código ='" &
[Código] ) AS aa
FROM Tabla1
WHERE (((DLookUp("Código","Tabla2","Código = " & [Código])) Is Null));
Saludos. César.
"julian-vlc-sp" escribió:
Gracias por tu respuesta.
Al ejecutar la consulta me devuelve el error que indica Julian 'Especifique
la tabla que contiene los registros que desea eliminar'
Saludos. César.
Gracias por tu respuesta.
Al ejecutar la consulta me devuelve el error que indica Julian 'Especifique
la tabla que contiene los registros que desea eliminar'
Saludos. César.
Delete Tabla1.*
From Tabla1 Left Join Tabla2
On Tabla1.Código = Tabla2.Código
Where Tabla2.Código Is Null;
Adios, un saludo.
"raipon" <raimo...@hotmail.com> escribió en el mensaje
news:uIScMdnc...@TK2MSFTNGP02.phx.gbl...
He probado tu propuestas y me da el siguiente mensaje:
No se puede eliminar nada en las tablas especificadas
Solo lo he logrado como postee anteriormente o son la siguiente consulta
DELETE Tabla1.codigo
FROM Tabla1
WHERE (((Tabla1.codigo) In (SELECT Tabla1.* FROM Tabla1 LEFT JOIN Tabla2 ON
Tabla1.codigo = Tabla2.codigo WHERE (((Tabla2.codigo) Is Null));)));
¿Estoy haciendo algo mal?
SALUDOS.
Julián-Valencia-España
http://www.tinyurl.com/julianvalencia
"raipon" <raimo...@hotmail.com> escribió en el mensaje
news:OldXb2n...@TK2MSFTNGP05.phx.gbl...
Sucede que habitualmente trabajo en un entorno Ado y este tipo de consultas
siempre las deja realizar, y me confundió ...
Así que resumiendo :
Para eliminar registros en una tabla 'maestra' mediante una consulta que
incluya también la tabla secundaria, debemos sacar dicha tabla de la
clausula From, bién sea con una subconsulta y el operador 'In' (es el método
que utilizas), una función agregada de dominio filtrada (he supuesto que
Código es un campo numérico) :
Delete Tabla1.*
From Tabla1
Where DCount("*", "Tabla2", "Código=" & Código) = 0;
, o mediante el predicado 'Exists', siendo este último el método más rápido
con diferencia :
Delete Tabla1.*
From Tabla1
Where Not Exists
(Select Código From Tabla2 Where Tabla2.Código = Tabla1.Código);
Adios, un saludo.
Yo es que las consultas las hago con diseñador grafico de Access y como
mucho retoco un pelin la SQL o meto la SQL de una consulta dentro de otra
cuando necesito consultas auxiliares.
Gracias de nuevo.
--
SALUDOS.
julian-Valencia-España
http://ijulian.iespana.es
http://www.tinyurl.com/julianvalencia