Eliminar registros de una tabla existentes en otra

Necesito eliminar en un ACCESS registros que están en una tabla y que se encuentren en otra.

Se trata de una tabla de pedidos pendientes y otra de pedidos realizados. Una vez se realizan tengo que eliminarlos de la tabla de registros pendientes.

El problema es que puede haber varios pedidos de un mismo cliente.

La estructura de las tablas es la siguiente (os pongo un ejemplo de registro)

Tabla [Registros Pendientes]:

Nº cliente                                                   1345

Código Producto                                       4567

Fecha Pedido                                             29/08/2018

Estado pedido                                            Pendiente

Tabla [Registros Realizados]:

Nº cliente                                                   1345

Código Producto                                       4567

Fecha Pedido                                             29/08/2018

Estado pedido                                            Realizado

El problema que me encuentro es que hay que eliminar sólo los registros de la tabla Registros Pendientes que estén en Registros Realizados pero (y aquí es donde no sé cómo hacerlo) el campo Nº cliente, Código Producto y Fecha de Pedido sean iguales a los de la tabla Registros Pendientes, porque en el ejemplo que os he puesto no habría que eliminar el registro existente

Nº cliente                                                   1345

Código Producto                                       4567

Fecha Pedido                                             30/08/2018

Estado pedido                                            Pendiente

Ya que aún sigue pendiente.

Necesito hacerlo en una Macro.

1 respuesta

Respuesta
2

Supongo que las tablas ya tienen datos, así que para un futuro te aconsejaría que en la tabla RegistrosRealizados le pusieras un campo Realizado(Si/no) y en el formulario RegistrosPendientes(que supongo que existe y que depende de la tabla ), cuando decidas que se ha realizado ese pedido marques la casilla y en sus propiedades-eventos-Después de actualizar crees un procedimiento de evento y pongas por ejemplo

docmd.runsql"delete * from registrospendientes where Npedido=" & me.npedido & ""

Me. Requery

Como no sé cuando pasas los valores a la tabla RegistrosRealizados no te puedo decir cuando debes poner

docmd.runsql"update registros realizados set realizado=-1 where Npedido=" & me.npedido & ""

Es decir, que te actualices la casilla realizado.

De todas formas, si me permites una consideración, ¿para qué repetir tablas si con una sóla llega? Por ejemplo, una tabla Pedidos, con los campos que quieras y la casilla antes citada.

En un formulario, llamésmole Principal, pones un botón Añadir nuevo pedido y le pones

Docmd. Openform"pedidos",,,, acformadd

Y te abre el formulario en un registro nuevo. Que quieres anotar como realizado un pedido pendiente, con poner, de forma general

docmd.openform"pedidos",,,"realizado=0"

Si sabes el clientes, puedes poner un combinado que te muestre sólo los nombres de los clientes que tengan pedidos pendientes, o un combinado con los números de los pedidos sin realizar, etc.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas