Tengo una tabla creada con el programa Microsoft Access y quiero crear una consulta por eliminación.

Tengo una base de datos en la que quiero crear una consulta de eliminación.
Las tablas afectadas son estas:
Pilotos de Fórmula1 (en ella guardo su id, nombre, apellidos, y la clave migrada de la Escudería a la que pertenece).
Escuderías (en ella guardo su id, el nombre y el país.
Estas dos tablas están relacionadas por una relación uno a muchos (por eso migra la clave de la tabla Escudería a la Tabla Pilotos).
Ahora te pongo al corriente de mi objetivo:
Me gustaría crear una consulta de eliminación para eliminar los pilotos de una determinada escudería.
Para ello incluyo las dos tablas en la consulta y los campos escuderia_nombre, piloto_nombre y piloto_apellidos.
Sin embargo, cuando lo intento, me sale un mensaje que dice:
"Especifique la tabla que contiene los registros que desea eliminar"
He mirado en propiedades de la consulta pero no veo nada que me ayuda a especificar la tabla.
¿No es posible realizar una consulta de eliminación con condiciones procedentes de una tabla distinta de la de los registros que pretendo eliminar?.

1 Respuesta

Respuesta
1
Estoy probando tu caso. Esperame un rato y te contesto.
Marciana
Acá va la respuesta.
Creé las dos tablas y cargué algunos registros.
Creé la consulta pero solamente con la tabla Pilotos.
Si cambiás la consulta desde vista diseño a vista SQL (comando Ver) verás cómo quedó construida la consulta en lenguaje SQL:
Con esta consulta por eliminación funcionó bien.
DELETE Pilotos.IdEscuderia, Pilotos.Apellido, Pilotos.Nombre
FROM Pilotos
WHERE (((Pilotos.IdEscuderia)=3));
Yo siempre uso claves numéricas, no me dijiste cómo lo hiciste en tu caso.
Además yo conecto internamente las claves desde la propiedad búsqueda (si no sabés hacerlo decime y te lo explico), de este modo tanto en la tabla como en el formulario en el campo de la Escudería te aparece la lista (cuadro combinado) y elegís la escudería por el nombre.
Pero en realidad la clave es un número.
Contame si esto te sirvió y si no seguimos trabajando, Marciana
Buenas noches Marciana,
Muchísimas gracias por su respuesta. Lo de la propiedad búsqueda no lo sabía y lo veo interesantísimo.
Sin embargo, la consulta de eliminación no queda muy amigable para el usuario. Si quiere borrar los pilotos de una escudería, debe ir primero a la tabla escuderías, ver el número y luego anotarlo como criterio en la consulta de eliminación.
Sería fantástico si el usuario no tuviese que saber el id (también uso numéricos) y simplemente tuviese que introducir el nombre de la misma en una consulta de parámetro o lista desplegable.
De nuevo muchas gracias por su tiempo y atención. Da gusto ver que hay gente altruista por el mundo.
Saludos
Esperaba esa objeción.
Aquí va la solución:
(Con paciencia y cuidado)
1) Creá un formulario en blanco con un cuadro combinado y un cuadro de texto. El nombre del Formulario es "ElegirEscuderia"
2)El nombre del cuadro combinado que usé es "CmbElegirEscuderia"
En el evento "Después de actualizar" este código
Private Sub CmbElegirEscuderia_AfterUpdate()
Dim stDocName As String
DoCmd.Close acQuery, "EliminaPilotos de Escuderia"
TxtElegido = CmbElegirEscuderia.Column(0)
stDocName = "EliminaPilotos de Escuderia"
DoCmd.OpenQuery stDocName, acNormal
End Sub
3) El cuadro de texto se llama TxtElegido y la propiedad visible que sea "No"
4) La consulta de eliminación tiene en el cuadro criterio de IdEscuderia lo siguiente:
[Forms]![ElegirEscuderia]![txtElegido]
5) En el botón que ejecuta la eliminación llamarás al formulario "ElegirEscuderia"
Por las dudas, el código SQL de la consulta es así:
DELETE Pilotos.IdEscuderia, Pilotos.Apellido, Pilotos.Nombre
FROM Pilotos
WHERE (((Pilotos.IdEscuderia)=[Formularios]![ElegirEscuderia]![txtElegido]));
Lo más sofisticado requiere elaboración.
Recomendación: los nombres sin espacio ni acentos ni eñes.
Después contame, Marciana

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas