Consulta de eliminación de registros en varias tablas

Quiero preguntarle un inconveniente que tengo con
la ejecución de una consulta DELETE en Access:

Tengo la siguiente consulta:
DELETE Acudientes.*, DANE.*, Estudiante.*, Asignación_Cupo.*,Estudiante.[N°deIdentificación_estudiante],* FROM Acudientes, DANE,
Estudiante, Asignación_Cupo WHERE (((Estudiante.[N° de Identificación_estudiante])=[Forms]![Formulario_estudiante_a_eliminar]![N_de_Identificación_estudiante]));

Al ejecutar esta consulta Access me dice:

No se pudo eliminar nada en las tablas especificadas. (Error
3086) Intentó eliminar datos de una o más tablas, pero no se pudo
Completar la eliminación.
Causas posibles:
No tiene permiso para modificar la tabla. Para cambiar las asignaciones de
Permisos, consulte al administrador del sistema o al creador de la tabla.
La base de datos se abrió con acceso de sólo lectura. La base de datos es
De sólo lectura por una de estas razones:
Utilizó el método OpenDatabase
Y abrió la base de datos para acceso de sólo lectura.
El archivo de base de datos se ha definido como sólo lectura en el sistema
Operativo del servidor de base de datos o por la red.
En un entorno de red, no tiene privilegios de escritura para el archivo de
Base de datos.
En Microsoft Visual Basic, utilizó el control Data y estableció la
propiedad ReadOnly en True.
Para eliminar los datos, cierre la base de datos, resuelva la condición de
Sólo lectura y vuelva a abrir el archivo para acceso de lectura y
Escritura.


Vale mencionar además que:
-La base de datos no está como solo lectura
- Yo soy el desarrollador del sistema de información razón por
La cual tengo todos los privilegios para trabajar y modificar la base de datos.
- La base de datos la estoy trabajando localmente y no en red.
-Mi sistema de información lo estoy desarrollando en Access con lenguaje
VBA no con conexión a Visual Basic 6,7,8 o .Net, pregunto aquí por que en
La categoría de Access, no hay expertos disponibles.

1 respuesta

Respuesta
1

Lo mejor es que hagas los DELETE tabla por tabla no todos a la vez en una sola sentencia, Access es un base de datos, pero no tan poderosa, y su motor de sentencias SQL no soporta muchas cosas.

Nuevamente, la recomendación es eliminar tabla por tabla, empezando por las que tienen llaves foráneas y de ultimo las tablas principales.

Hola experto muchas gracias con base a lo que usted me dijo estoy haciendo lo siguiente:

realizo en Access tres consultas en donde en cada consulta se eliminan c/u de los registros de una tabla1 con la tabla que esta relacionada, ya que mi sistema tiene 4 tablas relacionadas, cada una de las siguientes consultas son

ConsultasuperDelete1:

DELETE *
FROM Asignación_cupo
WHERE Asignación_cupo.Id=Estudiante.Id And (((Estudiante.[N° de Identificación_estudiante])=Forms!Formulario_estudiante_a_eliminar!N_de_Identificación_estudiante));

ConsultaSuperDelete2:

DELETE *
FROM DANE
WHERE DANE.Formulario_Nº=Estudiante.Formulario_Nº And (((Estudiante.[N° de Identificación_estudiante])=Forms!Formulario_estudiante_a_eliminar!N_de_Identificación_estudiante));

ConsultaSuperDelete3:

DELETE *
FROM Acudientes
WHERE Acudientes.Número_de_identificación_Acudiente=Estudiante.Número_de_identificación_Acudiente And (((Estudiante.[N° de Identificación_estudiante])=Forms!Formulario_estudiante_a_eliminar!N_de_Identificación_estudiante));

al ejecutar las tres consultas, mediante un botón con VBA.es decir al realizar esto:

DoCmd.OpenQuery ("ConsultaSuperDelete1")
DoCmd.OpenQuery ("ConsultaSuperDelete2")
DoCmd.OpenQuery ("ConsultaSuperDelete3")

Me pide el valor por ventana de el campo Estudiante.Id y Estudiante.N° de Identificación_estudiante, ahí esta el error no se por que me pide eso si eso ya esta almacenado en las correspondientes tablas.

Gracias por la ayuda.

Att. Hernán Camilo

Te esas refiriendo a un Formulario, cuando le dices Forms!Formulario_estudiante_a_eliminar!... si no estas dentro de este formulario, o el campo al cual estas haciendo memsion esta vacío te aparece la ventana pidiendo el valor pues de donde le dices que lo saque esta vacío

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas