Eliminar uno o más registros de una base de datos de Access

Se aplica a
Microsoft Office Access 2003

Quitar la información innecesaria es una buena estrategia de mantenimiento que deberían poner en práctica todos los usuarios de una base de datos. Eliminando la información obsoleta o incorrecta se facilita el uso y el mantenimiento de las bases de datos.

La información deja de ser necesaria por varios motivos:

  • Cambios en el mundo real. Ejemplos: se deja de fabricar un producto o se dejan de realizar operaciones en una región concreta.
  • Errores de los usuarios. Ejemplos: introducir información duplicada acerca de un cliente o crear varios formularios para introducir datos de facturación.
  • Finaliza un período de tiempo. Ejemplo: mover los datos del trimestre anterior a una base de datos de copia de seguridad al principio de cada trimestre.

El diseño de las bases de datos y los factores mencionados determinan lo que se debe eliminar de la base de datos. Podría ser algo tan sencillo como quitar el contenido de un campo o tan complejo como eliminar varias tablas.

Importante    Si tiene previsto hacer algo más que simplemente dejar un campo en blanco, debería familiarizarse primero con el diseño de la base de datos. Agregar o eliminar un registro raramente afecta a los datos relacionados, pero eliminar un registro suele requerir que se editen o eliminen los registros relacionados. Por ejemplo, si decide eliminar un registro Categoría de la tabla Categorías de la base de datos de ejemplo Neptuno, debería eliminar registros de varias tablas relacionadas, como por ejemplo Productos (todos los productos que pertenecen a esta categoría) o Detalles de pedido (las partes de los pedidos que corresponden a los productos que pertenecen a esta categoría).

Si no diseñó o creó la base de datos personalmente, dedique algún tiempo a examinar cómo está diseñada. Debería estar familiarizado con la estructura de las tablas de la base de datos, las relaciones existentes entre ellas y los diversos objetos que dependen de las tablas, de manera que comprenda las implicaciones que en toda la base de datos puede tener la eliminación de algún registro u objeto.

Este tema explica las distintas maneras de eliminar definitivamente uno o varios registros de una base de datos. Si desea quitar registros de la vista temporalmente, puede aplicar un filtro para ocultar los registros que no le interesen. Para obtener más información sobre los filtros, vea el tema Filtrar: limitar el número de registros que aparecen en una vista o informe.

Implicaciones de eliminar un registro

Lo más importante que se debe tener en cuenta al eliminar un registro es que podría provocar la eliminación de varios registros de tablas relacionadas. Puede que se pregunte por qué al eliminar un registro se ven afectados los registros relacionados. La respuesta es sencilla, pero podría no ser evidente: una base de datos almacena información relacionada en varias tablas, por lo que al quitar información fundamental de una tabla, podría ser necesario modificar o quitar información relacionada que estuviera almacenada en otras tablas.

Veamos un ejemplo para comprender por qué eliminar registros relacionados es algo conveniente. Imaginemos un escenario en el que es necesario agregar un registro a la base de datos de ejemplo Neptuno.mdb. La organización consigue un nuevo cliente llamado Importadores Mundiales, por lo que agrega un nuevo registro para este cliente a la tabla Clientes.

Tabla Clientes

Para ver si las tablas relacionadas se verán afectadas por este nuevo registro, identifique las tablas que están relacionadas con la tabla Clientes. Haga clic con el botón secundario del mouse (ratón) en el fondo de la ventana Base de datos y haga clic en Relaciones para mostrar la ventana Relaciones.

Tablas relacionadas con la tabla Clientes

La tabla Clientes está relacionada con la tabla Pedidos, pero no hay necesidad de agregar registros a la tabla Pedidos hasta que el cliente realice un pedido. Por lo tanto, al agregar un registro a una tabla no necesariamente se agregan datos a sus tablas relacionadas.

Más adelante, un cliente deja de realizar negocios. Ahora es necesario eliminar el registro de ese cliente. Además, deberá cancelar los pedidos pendientes de este cliente. Supongamos que no necesita conservar los datos de seguimiento de los pedidos cerrados que realizó este cliente. Podría haber casos en los que no desea eliminar los pedidos anteriores, pero para simplificar, imaginemos que sí desea eliminarlos. La eliminación de este cliente implica eliminar de la tabla Pedidos algunos registros relacionados. La ilustración siguiente muestra los registros de la tabla Pedidos que deben eliminarse junto con el registro de ese cliente.

Registros de la tabla Pedidos que se deben eliminar

La tarea no termina con simplemente eliminar los registros de pedidos relacionados. Debe evaluar el impacto de eliminar los registros de pedidos de las tablas que están relacionadas con la tabla Pedidos. Vuelva a la ventana Relaciones (haga clic con el botón secundario del mouse en el fondo de la ventana Base de datos y elija Relaciones para mostrar la ventana) e identifique las tablas que están relacionadas con la tabla Pedidos.

Tablas relacionadas con la tabla Pedidos

Las tablas Clientes, Transportistas, DetallesPedido y Empleados están relacionadas con la tabla Pedidos. La simple eliminación de un pedido nunca implicaría eliminar los registros correspondientes de las tablas Clientes, Transportistas o Empleados. Por otra parte, deberían quitarse los detalles de un pedido si éste ya no existe. Por lo tanto, es necesario que se asegure de que, cuando se elimina un registro de pedido de la tabla Pedidos, los registros de detalles del pedido correspondiente sí se eliminan de la tabla DetallesPedido.

En la ilustración siguiente, cada hoja secundaria de datos muestra los registros originales de detalles de pedidos que corresponden a cada registro de pedido que se debe eliminar.

Registros de detalles de pedidos que se deben eliminar junto con el registro de pedido y de cliente

Como resumen, se puede decir que al eliminar un solo registro de cliente se hace necesario eliminar varios registros de las tablas Pedidos y DetallesPedido. Al mismo tiempo, eliminar registros de la tabla Pedidos no requiere eliminar registros de las tablas Transportistas y Empleados.

Veamos cómo habilitar la eliminación automática de registros de las tablas Pedidos y DetallesPedido cuando se elimina un registro de cliente.

En la ventana Relaciones, haga clic en el segmento central de la línea que conecta las tablas Clientes y Pedidos para abrir la ventana Modificar relaciones.

Cuadro de diálogo Modificar relaciones

Las tablas están relacionadas según el campo IdCliente que existe en ambas tablas. Las casillas de verificación Exigir integridad referencial y Actualizar en cascada los campos relacionados ya están activadas, pero la casilla de verificación Eliminar en cascada los registros relacionados no lo está.

La primera casilla de verificación obliga a mantener la integridad referencial, que es un conjunto de reglas que garantiza que la base de datos está sincronizada con los datos reales, como se explica a continuación:

  • Regla 1: no se puede escribir un valor en el campo de clave externa de la tabla relacionada que no exista en la clave principal de la tabla principal. No obstante, puede introducir un valor nulo (Null) en la clave externa, especificando que los registros no están relacionados entre sí. Por ejemplo, no se puede tener un pedido asignado a un cliente que no existe, pero sí tener un pedido que no esté asignado a un vendedor; para ello se introduce un valor nulo en el campo Empleado.
  • Regla 2: no se puede eliminar un registro de una tabla principal si existen registros coincidentes en una tabla relacionada. Por ejemplo, no se puede eliminar un registro de empleado de la tabla Empleados si en la tabla Pedidos hay pedidos asignados a ese empleado.
  • Regla 3: no se puede cambiar un valor de clave principal en la tabla principal si ese registro posee registros relacionados. Por ejemplo, no se puede cambiar el identificador de un cliente en la tabla Clientes si ese cliente tiene pedidos registrados en la tabla Pedidos.

Siempre existe obligación de cumplir estas reglas cada vez que se agregan, modifican o eliminan datos en la base de datos. Cuando una acción incumple una regla, Access muestra un mensaje y cancela la acción. Por ejemplo, intente eliminar el registro del cliente Importadores Mundiales de la tabla Clientes. La relación existente entre las tablas Clientes y Pedidos obliga a mantener la integridad referencial y se presenta el mensaje siguiente cuando se intenta eliminar un registro de la tabla Clientes:

Mensaje de que no se puede eliminar un registro de la tabla Clientes

La obligación de respetar la integridad referencial en una relación se puede llevar a cabo cuando se cumplen las condiciones siguientes:

  • El campo coincidente (en este caso, IdCliente) de la tabla principal (Clientes) es una clave principal o tiene un índice único.
  • Los campos relacionados (IdCliente) son del mismo tipo de datos.

 Nota   Esta regla tiene dos excepciones. Un campo Autonumérico puede estar relacionado con un campo numérico con la propiedad TamañoDelCampo ajustada en Entero largo; y un campo Autonumérico con la propiedad TamañoDelCampo establecida en Id. de réplica puede estar relacionado con un campo numérico cuya propiedad TamañoDelCampo esté establecida en Id. de réplica.

  • Ambas tablas pertenecen a la misma base de datos de Access.

 Nota   Si las tablas están vinculadas, deben tener formato de Access. Para establecer la integridad referencial, debe abrir la base de datos en la que están almacenadas. No se puede obligar a respetar la integridad referencial en tablas vinculadas de bases de datos almacenadas en otros formatos.

Cuando la integridad referencial esté habilitada en una relación entre dos tablas, existe la opción de habilitar la actualización o eliminación automática de los registros contenidos en esas tablas. Si selecciona estas dos opciones, es importante hacer hincapié en que está permitido realizar las operaciones de eliminación y actualización que normalmente impedirían las reglas de integridad referencial. Por ejemplo, cuando no está seleccionada la opción Eliminar en cascada los registros relacionados, Access no permite eliminar registros de clientes mientras haya registros en la tabla Pedidos que hacen referencia al identificador de este cliente. Al activar la casilla de verificación Eliminar en cascada los registros relacionados este comportamiento variará. Cuando se intente eliminar un registro de cliente después de haber activado esta casilla de verificación, Access eliminará automáticamente los registros relacionados en lugar de mostrar un mensaje de error.

Si se activa la casilla de verificación Actualizar en cascada los campos relacionados cuando se definan relaciones entre tablas, en cualquier momento se puede cambiar la clave principal de un registro en la tabla principal, porque Access actualiza automáticamente la clave principal al nuevo valor en todos los registros relacionados.

Si se activa la casilla de verificación Eliminar en cascada los campos relacionados cuando se definan relaciones entre tablas, en cualquier momento en que se eliminen registros de la tabla principal, eliminará automáticamente los registros relacionados contenidos en la tabla relacionada. Por ejemplo, si se elimina un registro de la tabla Clientes, también se eliminarán automáticamente todos los registros de pedidos de ese cliente de la tabla Pedidos. Si está activada la casilla de verificación para la relación existente entre las tablas Pedidos y Detalles de pedidos y se elimina el registro del cliente, el resultado será que se eliminarán automáticamente los registros correspondientes de las tablas Pedidos y DetallesPedido.

Hay casos en que se deben cumplir las reglas de integridad referencial, pero no se deben eliminar los registros relacionados. Por ejemplo, para eliminar un registro de una tabla Empleados no se requiere eliminar los pedidos administrados por este empleado, para lo que estará activada la casilla de verificación Exigir integridad referencial en la relación existente entre las tablas Empleados y Pedidos, pero no la casilla de verificación Eliminar en cascada los registros relacionados. Pero cuando se intente eliminar el registro del empleado, Access presentará un mensaje de error y cancelará la operación. En esos casos, es necesario abrir la tabla Pedidos, buscar los registros que hacen referencia al identificador de empleado y editar el campo IdEmpleado para reemplazar su identificador con el identificador de otro empleado. Esto es importante para evitar que haya pedidos asignados a empleados que ya no trabajan en la compañía.

Editar la columna Empleado de la hoja de datos Clientes para eliminar todas las referencias al empleado

Una vez reemplazadas todas las referencias al identificador del empleado cuyo registro desea eliminar, se puede eliminar el registro de la tabla Empleados.

Volver al principio Volver al principio

Antes de eliminar registros

Antes de eliminar registros de las bases de datos, siga este procedimiento:

  • Asegúrese de que la base de datos no es de sólo lectura. Para ver el estado de la base de datos, en el Explorador de Microsoft Windows, haga clic con el botón secundario del mouse en el archivo de la base de datos (.mdb) y seleccione Propiedades. En el cuadro de diálogo Propiedades, observe la casilla de verificación Sólo lectura. Si está activada, desactívela.
  • Compruebe que dispone de permisos para eliminar registros de la base de datos.
  • Pida a todos los demás usuarios de la base de datos que cierren los objetos con los que desea trabajar. De esta manera será más fácil evitar que se produzcan infracciones de bloqueo.

 Sugerencia   Para obtener acceso exclusivo a una base de datos, ábrala. En el menú Herramientas, haga clic en Opciones. En la ficha Avanzadas, bajo Modo predeterminado de apertura, haga clic en Exclusivo. Sin embargo, recuerde no abrir las bases de datos de esta manera a menos que sea realmente necesario.

  • Realice una copia de seguridad de la base de datos antes de comenzar a editar o eliminar registros. Algunas operaciones de eliminación son reversibles, pero es más seguro efectuar una copia de seguridad para que siempre se pueda volver a la copia original si fuera necesario.

Para realizar una copia de seguridad de una base de datos, en el menú Archivo, haga clic en Realizar copia de seguridad de la base de datos. En el cuadro de diálogo Guardar copia de seguridad como, especifique un nombre y una ubicación para la copia de seguridad y haga clic en Guardar. Access cierra el archivo original, crea una copia de seguridad y después vuelve a abrir el archivo original. Para volver a una copia de seguridad, cierre el archivo original y cámbiele el nombre, de forma que la copia de seguridad pueda tener el mismo nombre de la versión original. Asigne el nombre del archivo de la versión original al de la copia de seguridad y ábralo en Access.

  • Revise las implicaciones de eliminar registros. Identifique las relaciones en las que toma parte la tabla de la que va a eliminar registros y revise los ajustes Exigir integridad referencial y Eliminar en cascada los registros relacionados de cada una de esas relaciones.
    • Si desea que se exija el cumplimiento de las reglas de integridad referencial y que la relación cumpla las condiciones para obligar al cumplimiento de las reglas de integridad referencial, active la casilla de verificación Exigir integridad referencial. Activando esta casilla de verificación podrá realizar la eliminación automática de los registros relacionados.
    • Si desea que se eliminen automáticamente los registros relacionados, active la casilla de verificación Eliminar en cascada los registros relacionados.

 Nota   Si activa esta casilla de verificación para una tabla relacionada, debe revisar la configuración de todas las relaciones en las que toma parte esta tabla relacionada.

  • Si no desea que se eliminen los registros relacionados, modifíquelos para que no hagan referencia al identificador del registro que se vaya a eliminar.
  • Si la tabla de la que va a eliminar registros es una tabla vinculada, asegúrese de que ésta admite la eliminación de registros, ya que no todas las tablas vinculadas permiten que se eliminen registros de las mismas. Por ejemplo, se pueden eliminar registros de una tabla vinculada a una base de datos de Access, pero cuando se intente eliminar registros de una tabla que esté vinculada a una hoja de cálculo de Microsoft Office Excel 2003, aparecerá el mensaje Este ISAM no admite la eliminación de datos de una tabla vinculada. Lo mejor que se puede hacer en este caso es abrir el archivo de origen (en este caso, la hoja de cálculo) y eliminar los datos no deseados.

Volver al principio Volver al principio

Información paso a paso

Los registros se pueden eliminar de muchas maneras distintas dependiendo de cada situación concreta. Las técnicas disponibles varían entre la eliminación de un solo registro seleccionándolo en un formulario y la creación de una consulta para eliminar, en una sola operación, cientos de registros que cumplen una condición específica.

¿Qué desea hacer?

Seleccionar y eliminar uno o más registros mientras explora en las vistas Hoja de datos, Formulario o Página

Eliminar todos los registros de una tabla (pero no la tabla en sí)

Eliminar una tabla y sus registros

Eliminar los registros que satisfacen un conjunto de condiciones creando una consulta de eliminación

Eliminar registros duplicados (el registro original y los duplicados podrían estar en una sola tabla o en tablas independientes)

Eliminar registros que no tienen coincidencia en otra tabla

Mover registros a una tabla o base de datos de archivo

Volver al principio Volver al principio

Seleccionar y eliminar uno o más registros mientras explora en las vistas Hoja de datos, Formulario o Página

  1. Abra la tabla que contiene el registro que desea eliminar en la vista Hoja de datos. Por ejemplo, abra la tabla Clientes y elimine el registro del cliente Importadores Mundiales.

 Nota   Para eliminar registros de la tabla subyacente puede usar una consulta, formulario o página de acceso a datos. Pero se debe tener la seguridad de que el objeto admite la eliminación en las vistas Hoja de datos, Formulario o Página.

MostrarRevisar la consulta, formulario o página para asegurarse de que admite la eliminación

La consulta no debe ser de sólo lectura en la vista Hoja de datos. Algunas consultas, como las consultas de unión, son de sólo lectura en la vista Hoja de datos. Dichas consultas no se pueden usar para eliminar registros.

Para revisar un formulario, ábralo en la vista Diseño. Asegúrese de que la propiedad PermitirEliminación está establecida en . Además, la propiedad SelectoresDeRegistro del formulario debe estar establecida en o el formulario debe ofrecer un botón personalizado para seleccionar o eliminar registros.

Para revisar una página, ábrala en la vista Diseño. Asegúrese de que la propiedad PermitirEliminación del nivel de grupo que contiene el registro está establecida en Verdadero. Además, la sección de exploración de registros del nivel de grupo correspondiente debe incluir el botón Eliminar o proporcionar un botón personalizado para eliminar registros.


  1. Para eliminar un solo registro en las vistas Hoja de datos o Formulario, seleccione el registro haciendo clic en el cuadrado gris (selector de registros) junto al margen izquierdo. A continuación, presione SUPR.

Para eliminar registros adyacentes en la vista Hoja de datos o en formularios continuos, haga clic en el primer registro que desea eliminar, mantenga presionada la tecla MAYÚS mientras hace clic en el cuadrado gris (selector de registros) del último registro. De esta manera se selecciona un bloque de registros. A continuación, presione SUPR.

Para eliminar un registro en la vista Página, haga clic en un campo que esté incluido en el registro y, después, haga clic en el botón Eliminar en la sección de exploración de registros correspondiente.

  1. Tenga las precauciones siguientes, dependiendo de las relaciones de las tablas y de cómo están definidas:
    • Si todas las relaciones que implican la tabla Clientes (Clientes-Pedidos) y las relaciones de sus tablas relacionadas (Pedidos-DetallesPedido), y así sucesivamente hasta la última de las tablas de la cadena de relaciones, están definidas de tal manera que se puedan eliminar todos los registros relacionados (está activada la casilla de verificación Eliminar en cascada los registros relacionados en cada una de esas relaciones), aparecerá el mensaje siguiente:

Mensaje solicitando confirmación

Haga clic en para confirmar la eliminación. Si no tiene la seguridad de que desea eliminar los registros relacionados, haga clic en No y vea la sección Implicaciones de eliminar un registro.

  • Si una de las tablas relacionadas incluidas en la cadena de relaciones no permite la eliminación de registros relacionados, se aparecerá el mensaje siguiente:

Mensaje de error en la operación de eliminación porque la tabla relacionada no permite efectuar eliminaciones en cascada

Este mensaje aparece si la relación Pedidos-DetallesPedido no permite realizar eliminaciones en cascada. Para solucionar este problema, revise la configuración de las relaciones en el cuadro de diálogo Modificar relaciones. Además, vea la sección Implicaciones de eliminar un registro.

  • Si una de las relaciones sólo exige que se respete la integridad referencial pero no permite efectuar eliminaciones en cascada, aparece este mensaje:

Mensaje de que no se puede eliminar un registro de la tabla Clientes

Si la relación Clientes-Pedidos no permite realizar eliminaciones en cascada, no se puede eliminar ningún registro de cliente mientras existan registros de pedidos que hagan referencia al identificador del cliente Importadores mundiales. Para solucionar este problema, vea la sección Se deben cumplir las reglas de integridad referencial, pero no se deben eliminar los registros relacionados.

  • Si la tabla no está relacionada con ninguna otra tabla o si sus relaciones no exigen que se respete la integridad referencial, aparecerá este mensaje:

Mensaje solicitando confirmación cuando no hay registros relacionados

Haga clic en para confirmar la eliminación.

<Volver al índice>

Eliminar todos los registros de una tabla (pero no la tabla en sí)

Para vaciar una tabla, como por ejemplo la tabla Clientes, ábrala en la vista Hoja de datos. Haga clic con el botón secundario del mouse en el cuadrado gris que aparece a la izquierda del encabezado de la primera columna, también denominado botón Seleccionar todo y haga clic en Eliminar registro.

Eliminar todos los registros de la tabla en una sola operación

Tenga las precauciones siguientes, dependiendo de las relaciones de las tablas y de cómo están definidas:

  • Si todas las relaciones que implican la tabla Clientes (como por ejemplo Clientes-Pedidos) y las relaciones de sus tablas relacionadas (Pedidos-DetallesPedido), y así sucesivamente hasta la última de las tablas de la cadena de relaciones, están definidas de tal manera que se puedan eliminar todos los registros relacionados (está activada la casilla de verificación Eliminar en cascada los registros relacionados en cada una de esas relaciones), aparecerá el mensaje siguiente:

Mensaje solicitando confirmación

Haga clic en para confirmar la eliminación. Si no tiene la seguridad de que desea eliminar los registros relacionados, haga clic en No y vea la sección Implicaciones de eliminar un registro.

  • Si una de las tablas relacionadas incluidas en la cadena de relaciones no permite la eliminación de registros relacionados, se aparecerá el mensaje siguiente:

Mensaje de error en la operación de eliminación porque la tabla relacionada no permite efectuar eliminaciones en cascada

Este mensaje aparece si la relación existente entre las tablas Pedidos y DetallesPedido no permite realizar eliminaciones en cascada. Para solucionar este problema, revise la configuración de las relaciones en el cuadro de diálogo Modificar relaciones. Además, vea la sección Implicaciones de eliminar un registro.

  • Si una de las relaciones sólo exige que se respete la integridad referencial pero no permite efectuar eliminaciones en cascada, aparece este mensaje:

Mensaje de que no se puede eliminar un registro de la tabla Clientes

Si la relación existente entre las tablas Clientes y Pedidos no permite realizar eliminaciones en cascada, no se puede eliminar ningún registro de cliente mientras existan registros de pedidos que hagan referencia al identificador del cliente Importadores mundiales. Para solucionar este problema, vea la sección Se deben cumplir las reglas de integridad referencial, pero no se deben eliminar los registros relacionados.

  • Si la tabla no está relacionada con ninguna otra tabla o si sus relaciones no exigen que se respete la integridad referencial, aparecerá este mensaje:

Mensaje solicitando confirmación cuando no hay registros relacionados

Haga clic en para confirmar la eliminación.

<Volver al índice>

Eliminar una tabla y sus registros

Al eliminar una tabla no se eliminan de la base de datos las tablas relacionadas ni los registros relacionados. Sin embargo, si la tabla está relacionada con otras tablas en el momento de eliminarla, esta operación eliminará la relación existente entre esa tabla y cualquier otra tabla. Por ejemplo, si elimina la tabla Clientes y si ésta está relacionada con la tabla Pedidos, se elimina la relación existente entre la tabla Clientes y la tabla Pedidos junto con la tabla Clientes, pero la tabla Pedidos queda intacta.

  1. Para eliminar de la base de datos la tabla y todo su contenido, seleccione la tabla en la ventana Base de datos y presione SUPR.
  2. Cuando se le pida confirmación para la eliminación, haga clic en .
  3. Si la tabla está relacionada con otras tablas, aparecerá el mensaje siguiente:

Mensaje pidiendo confirmación para eliminar las relaciones de la tabla

  1. Para confirmar la operación, haga clic en .

La tabla, su contenido y todas las relaciones se eliminarán de la base de datos.

<Volver al índice>

Eliminar los registros que cumplen un conjunto de condiciones

Para eliminar los registros en función de si cumplen un conjunto de condiciones se utiliza un tipo especial de consulta denominado consulta de eliminación. Si las condiciones no varían con el paso del tiempo, como por ejemplo "todos los pedidos realizados hace más de 90 días", puede especificar las condiciones en la fila Criterios de los campos de consulta cuando cree la consulta de eliminación. Si las condiciones cambian con el paso del tiempo y desea especificar las condiciones cuando ejecute la consulta, puede hacer que la consulta de eliminación pida que las especifique.

Las condiciones pueden estar basadas en campos contenidos en la misma tabla o en otra tabla. Por ejemplo, se pueden eliminar registros de pedidos en función de las fechas en que se realizaron o en función de la ciudad donde se encuentra el cliente correspondiente. En el primer caso, el campo FechaPedido está en la misma tabla que los registros de pedido; en el segundo caso, el campo Ciudad pertenece a una tabla distinta (Clientes).

Importante    Las consultas de eliminación respetan los ajustes Exigir integridad referencial y Eliminar en cascada los registros relacionados de las relaciones existentes entre las tablas. Esto significa que se producirá un error cuando una consulta de eliminación intente eliminar los registros de pedidos si se exige que se respete la integridad referencial en la relación Pedidos-DetallesPedido pero no está habilitada la opción de realizar eliminaciones en cascada. De forma parecida, si la relación tiene activada la opción de eliminación en cascada, la consulta elimina automáticamente de la tabla DetallesPedido los registros de los pedidos y los registros relacionados. Para obtener más información, vea la sección Implicaciones de eliminar un registro.

Creemos una consulta de eliminación para eliminar los registros correspondientes a los pedidos realizados hace 90 días. Después se puede modificar esta consulta para que acepte los datos introducidos por el usuario cuando se ejecute la consulta. Cerca del final de esta sección, puede modificar esta consulta a eliminar registros en función de valores contenidos en una tabla relacionada.

Ahora nos aseguraremos de que las relaciones están correctamente configuradas. Haga clic con el botón secundario del mouse en el fondo de la ventana Base de datos y después haga clic en Relaciones. En la ventana Relaciones, identifique las tablas que están relacionadas con la tabla Pedidos y la configuración de cada una de esas relaciones. La tabla Pedidos está relacionada con la tabla DetallesPedido: la relación exige que se respeten las reglas de integridad referencial y permite realizar eliminaciones en cascada. La tabla Pedidos también está relacionada con las tablas Transportistas, Empleados y Clientes, pero dichas tablas no se ven afectadas por la eliminación de registros de pedidos.

Tablas relacionadas con la tabla Pedidos

  1. En la ventana Base de datos (ventana de base de datos: en Access 2003 y versiones anteriores, ventana que aparece cuando se abre una base de datos o un proyecto. Muestra métodos abreviados para crear objetos de base de datos nuevos y abrir otros existentes. En versiones posteriores, fue reemplazada por el panel de navegación.), bajo Objetos, haga clic en ConsultasImagen del botón y, a continuación, haga clic en Nueva en la barra de herramientas de la ventana Base de datos.
  2. En el cuadro de diálogo Nueva consulta, haga clic en Vista Diseño y, a continuación, haga clic en Aceptar.
  3. En el cuadro de diálogo Mostrar tabla, haga doble clic en Pedidos y, después, en Cerrar.
  4. En la barra de herramientas, haga clic en la flecha situada junto al botón Tipo de consultaImagen del botón y haga clic en Consulta de eliminación. Así se cambia una consulta de selección a una consulta de eliminación.
  5. Arrastre el asterisco (*) desde la tabla hasta la cuadrícula de diseño de la consulta.

Arrastrar el asterisco (*) hasta la fila Campo

En la primera columna, aparece Desde en la fila Eliminar, y Pedidos en la fila Tabla. Esto indica que las filas se eliminarán de la tabla Pedidos.

  1. A continuación, es necesario especificar las condiciones en la fila Criterios. No se puede especificar criterios en la columna del asterisco (*). Se debe agregar las columnas de criterios a la cuadrícula y, a continuación, especificar los criterios. En este caso, deseamos eliminar los registros en los que la diferencia entre la fecha actual y la fecha de pedido es superior a 90 días, por lo que agregaremos la columna FechaPedido a la cuadrícula.

Columna FechaPedido en la cuadrícula de diseño

En la segunda columna, aparece Dónde en la fila Eliminar.

  1. Escriba <AgregFecha("d",-90, Date()) en la fila Criterios de la segunda columna. La función AgregFecha agrega o resta un período de tiempo a una fecha concreta. En este ejemplo, la función devuelve la fecha anterior en 90 días a la fecha actual. El operador "<" compara esta fecha con la fecha en la que se realizó cada pedido y selecciona los registros en los que las fechas de pedido son anteriores a este valor calculado.

Para obtener más información acerca de la función AgregFecha, vea el sitio Web MSDN.

  1. En la barra de herramientas, haga clic en VerImagen del botón para obtener una vista previa de los registros que se eliminarán. Si la fecha actual es el 14/10/1996, se eliminarán los registros realizados antes del 17/7/1996.

Registros de pedidos que se eliminarán

  1. Guarde la consulta con el nombre Eliminar pedidos, cierre la consulta y vuelva a la ventana Base de datos.
  2. Busque la consulta en la ventana Base de datos y haga doble clic en ella. Si no ha desactivado los mensajes de confirmación, se le pedirá que confirme que desea continuar con la operación de eliminación. Haga clic en dos veces para confirmar que desea eliminar los registros utilizando la consulta.

MostrarPara que no aparezcan estos cuadros de mensaje cada vez que se ejecute esta consulta

En el menú Herramientas, haga clic en Opciones. Haga clic en la ficha Modificar/Buscar. Bajo Confirmar, desactive la casilla de verificación Consultas de acción.


  1. Si ha seguido todos los pasos anteriores, si dispone de permisos para eliminar los registros de la base de datos y si la base de datos no está bloqueada ni es de sólo lectura, la consulta de eliminación realizará la eliminación de los registros antiguos correctamente. Abra la tabla Pedidos en la vista Hoja de datos para comprobar que se eliminaron los registros. Además, abra la tabla DetallesPedido para asegurarse de que se eliminaron los registros de detalle relacionados.

Ahora modificaremos la consulta Eliminar pedidos para que pida que se introduzca un intervalo de fechas personalizado que utilizar como criterios para la eliminación de registros. Empecemos por escribir la expresión, dando por supuesto que las fechas no van a cambiar. En este caso, la expresión será parecida a la siguiente: ">valor de fecha And <valor de fecha". Ahora reemplazaremos las fechas de la expresión con los mensajes que están incluidos entre corchetes [Escriba la fecha de inicio] y [Escriba la fecha de finalización]. Ahora la expresión presenta este aspecto:

>[Escriba la fecha de inicio] And <[Escriba la fecha de finalización]

Cuando se ejecute la consulta, Access intentará evaluar los criterios. Si los criterios incluyen los mensajes, Access mostrará los mensajes en cuadros de texto independientes, como se puede ver aquí.

Cuadros de mensajes que piden que se introduzcan los parámetros para evaluar los criterios de la consulta

Cuando se introduzca un valor en el primer cuadro de mensaje y se haga clic en Aceptar, Access mostrará el segundo mensaje. Después, para evaluar los criterios, se utilizarán los valores en lugar de los mensajes.

Observe que se pueden mostrar varios mensajes. Los mensajes podrían referirse a un solo campo o a varios de ellos. Por ejemplo, para mostrar los pedidos realizados entre dos fechas concretas y por parte de un cliente específico, se puede solicitar información al cliente en tres ocasiones: para pedir las fechas inicial y final, y para pedir el valor del identificador de cliente (IdCliente).

En este ejemplo presentaremos dos mensajes, uno para la fecha inicial y otro para la fecha final, para permitir al usuario que especifique el intervalo de fechas para la eliminación de registros.

  1. En la ventana Base de datos, busque la consulta y haga clic en ella una vez para seleccionarla. No haga doble clic en ella, porque así se ejecutaría la consulta.
  2. En la barra de herramientas de la ventana Base de datos, haga clic en Diseño para abrir la consulta en la vista Diseño.
  3. En la cuadrícula, elimine el contenido de la fila Criterios de la columna FechaPedido. A continuación, escriba >[Escriba la fecha de inicio] And <[Escriba la fecha de finalización] en la fila Criterios.
  4. En la barra de herramientas, haga clic en VerImagen del botón.
  5. Aparece el mensaje de la fecha inicial. Escriba una fecha, por ejemplo 1/1/97, como se indica en la ilustración siguiente.

Cuadro de diálogo Introduzca el valor del parámetro

  1. Haga clic en Aceptar. Aparecerá otro mensaje que solicita que se especifique una fecha final. Escriba 1/12/97 y haga clic en Aceptar.
  2. Se mostrarán los registros de pedidos cuyas fechas de pedido están comprendidas entre el 1/1/97 y el 1/12/97. Si se especifican estos valores cuando se ejecute la consulta, se eliminarán los registros que aparecen en la vista.

Registros que se eliminarán cuando se ejecute la consulta

  1. Guarde y cierre la consulta y después vuelva a la ventana Base de datos.
  2. Busque la consulta en la ventana Base de datos y haga doble clic en ella. Haga clic en una vez y especifique las fechas inicial y final. Haga clic de nuevo en para confirmar que desea eliminar los registros utilizando la consulta.

MostrarPara que no aparezcan los mensajes de confirmación cada vez que se ejecute esta consulta

En el menú Herramientas, haga clic en Opciones. Haga clic en la ficha Modificar/Buscar. Bajo Confirmar, desactive la casilla de verificación Consultas de acción.


  1. Si ha seguido todos los pasos anteriores, si dispone de permisos para eliminar los registros de la base de datos y si la base de datos no está bloqueada ni es de sólo lectura, la consulta de eliminación realizará la eliminación de los registros cuya fecha de pedido está comprendida en el intervalo especificado. Abra la tabla Pedidos en la vista Hoja de datos para comprobar que se eliminaron los registros. Además, abra la tabla DetallesPedido para asegurarse de que se eliminaron los registros de detalle relacionados.

Observemos ahora cómo eliminar los registros que están basados en valores incluidos en una tabla relacionada. Crearemos una consulta de eliminación que eliminará los pedidos realizados por los clientes situados en una ciudad específica. La información de la ciudad se encuentra en el campo Ciudad de la tabla Clientes, que está relacionada con la tabla Pedidos.

  1. En la ventana Base de datos (ventana de base de datos: en Access 2003 y versiones anteriores, ventana que aparece cuando se abre una base de datos o un proyecto. Muestra métodos abreviados para crear objetos de base de datos nuevos y abrir otros existentes. En versiones posteriores, fue reemplazada por el panel de navegación.), bajo Objetos, haga clic en ConsultasImagen del botón y, a continuación, haga clic en Nueva en la barra de herramientas de la ventana Base de datos.
  2. En el cuadro de diálogo Nueva consulta, haga clic en Vista Diseño y, a continuación, haga clic en Aceptar.
  3. En el cuadro de diálogo Mostrar tabla, haga doble clic en las tablas Clientes y Pedidos, y después haga clic en Cerrar.

Las tablas tienen una relación uno a varios, por lo que se ve una línea que une ambas tablas.

MostrarNo aparece la línea que une los objetos de la consulta

Si la consulta está basada en dos tablas no relacionadas, o en una tabla y una consulta, no aparecerá ninguna línea uniendo los dos objetos. Si una consulta de eliminación está basada en objetos no relacionados, es posible que al ejecutar la consulta aparezca el mensaje No se pudo eliminar de las tablas especificadas.

Para evitar que aparezca este mensaje, cree una relación entre los dos objetos arrastrando el campo común desde la primera tabla o consulta hasta el campo correspondiente de la segunda tabla o consulta. A continuación, haga clic con el botón secundario del mouse en la mitad superior de la ventana de consulta y haga clic en Propiedades para mostrar la hoja de propiedades de la consulta. Por último establezca la propiedad RegistrosÚnicos en .


  1. En la barra de herramientas, haga clic en la flecha situada junto al botón Tipo de consultaImagen del botón y haga clic en Consulta de eliminación. Así se cambia una consulta de selección a una consulta de eliminación.
  2. Arrastre el asterisco (*) desde la tabla Pedidos hasta la cuadrícula de diseño de la consulta.

Arrastrar el asterisco (*) desde la tabla Pedidos hasta la fila Campo de la primera columna

En la primera columna, aparece Desde en la fila Eliminar, y Pedidos en la fila Tabla. Esto indica que las filas se eliminarán de la tabla Pedidos.

  1. A continuación, es necesario especificar las condiciones en la fila Criterios. No se puede especificar criterios en la columna del asterisco (*). Se debe agregar los campos de criterios a la cuadrícula y, a continuación, especificar los criterios. Por ejemplo, desea eliminar los registros de pedidos realizados por clientes radicados en Londres. Arrastre el campo Ciudad desde la tabla Clientes hasta la segunda columna de la cuadrícula de diseño de consulta.

En la segunda columna, aparece Dónde en la fila Eliminar.

  1. Escriba = "Londres" en la fila Criterios de la columna Ciudad.

 Sugerencia   Para permitir a los usuarios que escriban una ciudad cuando ejecuten la consulta, escriba =[Escriba la ciudad del cliente] en la fila Criterios.

  1. En la barra de herramientas, haga clic en VerImagen del botón para obtener una vista previa de los registros que se eliminarán.

Pedidos de los clientes ubicados en Londres

  1. Ahora estarán a la vista los registros de todos los pedidos realizados por clientes de Londres. Guarde la consulta y ciérrela.
  2. Busque la consulta en la ventana Base de datos y haga doble clic en ella. Si no ha desactivado los mensajes de confirmación, se le pedirá que confirme que desea continuar con la operación de eliminación. Haga clic en dos veces para confirmar que desea eliminar los registros utilizando la consulta.

MostrarPara que no aparezcan estos cuadros de mensaje cada vez que se ejecute esta consulta

En el menú Herramientas, haga clic en Opciones. Haga clic en la ficha Modificar/Buscar. Bajo Confirmar, desactive la casilla de verificación Consultas de acción.


  1. Si ha seguido todos los pasos anteriores, si dispone de permisos para eliminar los registros de la base de datos y si la base de datos no está bloqueada ni es de sólo lectura, la consulta de eliminación realizará la eliminación de los pedidos recibidos desde Londres. Abra la tabla Pedidos en la vista Hoja de datos para comprobar que se eliminaron los registros. Además, abra la tabla DetallesPedido para asegurarse de que se eliminaron los registros de detalle relacionados.

<Volver al índice>

Eliminar registros duplicados. El registro original y los duplicados podrían estar en una sola tabla o en tablas independientes.

Hay muchos escenarios que pueden implicar la búsqueda y eliminación de los datos duplicados. Estos escenarios y los procedimientos paso a paso necesarios para buscar, ocultar y eliminar datos duplicados se explican en el artículo Buscar, eliminar u ocultar registros duplicados en Access.

Eliminar registros que no tienen coincidencia en otra tabla

Imaginemos que no se exigió respetar las reglas de integridad referencial para la relación existente entre las tablas Clientes y Pedidos en el momento de crear las tablas. Con el paso del tiempo, al eliminar los registros de clientes, no se eliminaron los registros de pedidos correspondientes. Ahora hay varios registros de pedidos que hacen referencia a un identificador de cliente no válido o que están establecidos en el valor nulo. Una consulta de búsqueda de no coincidentes ayudará a buscar todos esos registros en los que el campo IdCliente está establecido en un valor que no existe en la tabla Clientes, incluidos los valores nulos.

Creemos ahora una consulta usando el Asistente para consultas de buscar no-coincidentes. Este asistente crea una consulta especial que compara dos tablas y devuelve únicamente los registros de la primera tabla que no tienen coincidencia en la segunda tabla. Después se puede abrir esta consulta en la vista Hoja de datos y eliminar todos los registros mostrados en la vista.

  1. En la ventana Base de datos, bajo Objetos, haga clic en Consultas y en Nueva en la barra de herramientas de la ventana Base de datos.
  2. En el cuadro de diálogo Nueva consulta, haga clic en Asistente para consultas de buscar no-coincidentes y después en Aceptar.

MostrarAparece el mensaje "El asistente no está instalado o está deshabilitado"

Esto se podría deber a que Access se estuviera ejecutando en modo de recinto de seguridad, pero no estuviera instalado en el equipo Microsoft Jet 4.0 SP8 o una versión posterior. Para que Access esté completamente operativo, se requiere Jet 4.0 SP8 o una versión posterior cuando está habilitado el modo de recinto de seguridad.

Para obtener más información acerca de la actualización de Jet, vea el artículo de Office Online Acerca de Microsoft Jet 4.0 SP8 o posterior.

Para obtener más información acerca del modo de recinto de seguridad, vea el artículo de Office Online Acerca del modo de recinto de seguridad del Servicio de expresión de Microsoft Jet.


  1. Seleccione la tabla Pedidos, porque contiene los registros que le interesan. A continuación, haga clic en Siguiente.
  2. Haga clic en la tabla Clientes, ya que ésta es la tabla con la que desea realizar la comparación. A continuación, haga clic en Siguiente.
  3. En ambas listas debería aparecer seleccionado el campo IdCliente. Esto indica que las tablas se unirán basándose en los identificadores de cliente. Haga clic en Siguiente.
  4. Seleccione los campos que desee que aparezcan en la vista. En este caso, agregue los campos IdPedido, IdCliente y FechaPedido. Haga clic en Siguiente.
  5. Acepte el nombre sugerido para la consulta y haga clic en Finalizar para ver los registros en la vista Hoja de datos. Aparecerán los registros en los que el contenido del campo IdCliente es un valor nulo o no válido, como se puede ver aquí.

Registros con valores nulos o no válidos en la columna Cliente

  1. Elimine todos o parte de los registros mostrados. Para obtener información paso a paso, vea la sección Eliminar registros en la vista Hoja de datos.

<Volver al índice>

Mover registros a una tabla o base de datos de archivo

Puede que desee eliminar registros de vez en cuando para mantener actualizada la base de datos y el tamaño de archivo dentro de los límites de manejabilidad. Por ejemplo, al principio de cada trimestre, quizás desee mover los datos de la base de datos de ventas correspondientes al trimestre anterior a una base de datos de archivo.

Mover registros a una tabla o base de datos de archivo implica los pasos siguientes:

  1. Identifique los registros que desea incluir en el archivo. Puede que desee archivar toda una tabla, o bien sólo algunos registros que cumplan un conjunto de condiciones.
  2. Copie estos registros en la tabla de archivo. Para ello se utiliza una consulta de datos anexados.
  3. Elimine estos registros de la tabla original, para lo cual se usa una consulta de eliminación.
  4. También existe la opción de crear una macro para ejecutar automáticamente los pasos 1 a 3.

Para obtener información detallada sobre cómo crear las consultas y la macro, vea el artículo Archivar periódicamente registros en una base de datos de Access.

<Volver al índice>

Resumen de mensajes

La tabla siguiente resume los distintos mensajes que podrían aparecer al eliminar uno o varios registros.

Mensaje Qué significa Lo que se puede hacer
No se eliminaron los registros. Los datos son de sólo lectura.    (En la barra de estado) La base de datos es de sólo lectura. Cambie la configuración del archivo para que la base de datos no sea de sólo lectura.
No se pueden eliminar registros con este formulario.    (En la barra de estado) El formulario no permite la eliminación de registros. Establezca la propiedad PermitirEliminación del formulario en .
No se pudo eliminar de las tablas especificadas.     La consulta de eliminación se basa en tablas y consultas que no están relacionadas. Esta consulta no puede unir los registros incluidos en dos objetos.

Relacione los dos objetos en la ventana Diseño de la consulta. Arrastre el campo común desde la primera tabla o consulta hasta el campo correspondiente en la segunda tabla o consulta.

A veces, también puede ser necesario establecer la propiedad RegistrosÚnicos de la consulta en . Haga clic con el botón secundario del mouse en la mitad superior de la ventana de consulta y haga clic en Propiedades para mostrar la hoja de propiedades de la consulta. A continuación, establezca la propiedad RegistrosÚnicos en .

Los registros no se pueden eliminar ni cambiar porque la tabla nombre de la tabla incluye registros relacionados.     La relación entre la tabla y la tabla mencionada en el mensaje de error obliga a respetar la integridad referencial, pero no permite realizar eliminaciones en cascada. Habilite la eliminación en cascada activando la casilla de verificación Eliminar en cascada los registros relacionados del cuadro de diálogo Modificar relaciones o asegúrese de que la tabla relacionada no hace referencia a los valores que se van a eliminar.
No se puede realizar la operación en cascada. Dado que existen registros en la tabla nombre de tabla, se infringirían las reglas de integridad referencial.     Una de las tablas relacionadas de la cadena de relaciones exige que se respete la integridad referencial, pero no permite efectuar eliminaciones en cascada.

Revise la configuración de la relación correspondiente en el cuadro de diálogo Modificar relaciones. Si no está activada la casilla de verificación Eliminar en cascada los registros relacionados, actívela.

O bien, modifique el contenido de la tabla mencionada en el mensaje para que no haga referencia a los valores que se van a eliminar.

Las relaciones que especifican eliminaciones en cascada están a punto de hacer que se eliminen n
registro(s) de esta tabla y de tablas relacionadas.
    

¿Está seguro de que desea eliminar estos registros?    

Todas las tablas que están directa o indirectamente relacionadas con la tabla permiten realizar eliminaciones en cascada. La operación eliminará registros de la tabla actual y de una o varias tablas relacionadas.

Haga clic en si desea eliminar esos registros.

Para cancelar la operación, haga clic en No.

Está a punto de eliminar n
registros.
    

Haga clic en Sí para eliminar estos registros permanentemente. ¿Está seguro de que desea eliminar estos registros?    

La eliminación de registros de esta tabla no afecta a otras tablas.

Haga clic en si desea eliminar esos registros.

Para cancelar la operación, haga clic en No.

No se puede eliminar la tabla nombre de tabla hasta que se eliminen sus relaciones con otras tablas.    

¿Desea que Microsoft Access elimine las relaciones ahora?    

La tabla que está intentando eliminar está relacionada con otras tablas. Haga clic en para eliminar la tabla, su contenido y todas sus relaciones.

Volver al principio Volver al principio

Tareas relacionadas

Escribir una instrucción DELETE para utilizarla en código    Va el tema Instrucción DELETE para obtener más información.

 Sugerencia   La forma más sencilla de obtener la instrucción SQL correcta que utilizar en código consiste en generar la consulta en la vista Diseño y luego pasar a la Vista SQL para ver la instrucción SQL generada por la consulta. Entonces puede copiar y pegar esta instrucción en el código.

Compactar una base de datos de Access    Después de eliminar un número significativo de registros, puede que desee compactar una base de datos para reducir su tamaño de archivo y mejorar el rendimiento. Para obtener información paso a paso, vea Compactar y reparar un archivo de Access.

Restablecer un campo Autonumérico    Después de eliminar registros, puede que observe espacios en los valores de un campo Autonumérico. Eliminar registros o compactar una base de datos no restablece automáticamente los valores de los campos Autonuméricos. Para obtener información sobre cómo restablecer un campo Autonumérico, vea el artículo de Microsoft Knowledge Base Cómo restablecer un valor de campo Autonumérico en Access.

Volver al principio Volver al principio

 
 
Corresponde a:
Access 2003