Dudas sobre relación de campos Access

A ver si consigo explicarme.

Tengo una tabla de libros con sus campos (código libro, autor,...). Tengo otra tabla llamada clasificación con sus respectivos campos (nombre serie, codigo serie,..).

El campo "nombre serie" está relacionado con varios libros, de manera que, desde un formulario en un cuadro combinado, elijo el nombre de una serie y me aparecen todos los libros relacionados con ella.

El problema es que han cambiado los nombre de las series. Cada nombre nuevo de serie tiene su equivalencia con el nombre antiguo de serie. Quisiera poder elegir en el cuadro combinado el nombre nuevo de la serie y que me apareciesen los libros relacionados con el antiguo nombre de la serie equivalente.

Por ejemplo, si elijo la serie nueva Terror en el cuadro combinado, me aparezcan los libros relacionados con la antigua serie Horror.

No sé si he conseguido explicarme bien.

A ver si alguien puede echarme una mano.

3 Respuestas

Respuesta
1

A pesar que la sugerencia de Julián González Cabarcos, que es una buena solución, la otra opción es modificar tu filtro a través de una consulta SELECT donde filtres el campo "nombre serie" IN ("Terror","Horror") como un ejemplo

select * from libros where "nombre_serie" IN ("Terror","Horror")

Gracias por contestar,

El problema es que son más de 100 series nuevas y más de 100.000 libros.

Lo ideal sería que el usuario escogiese una serie nueva en un cuadro combinado, access detectase su relación su equivalente serie antigua, y mostrase todas las cajas vinculadas con esta serie antigua.

Quizás estableciendo relaciones o añadiendo alguna columna a las tablas. No sé.

Gracias

Tienes alguna tabla, ¿dónde tengas la relación entre la serie vieja y serie nueva? Porque sino, no hay manera que se pueda cruzar la información.

si tienes una tabla que diga serie_vieja=serie_nueva se podria ahcer un cruce contra esa tabla

Ahora, Si las +100 series viejas, las actualizas en los libros, con la serie nueva, ¿te afecta en algo?

La actualización de la serie en los libros, así sean más de 100 Mil, es un UPDATE BÁSICO

Ejemplo:

update libros set nombre_serie="Terror" where nombre_serie="Horror"

En ese caso, no necesitas hacer algo nuevo...

Respuesta
1

Otra forma, en tu tabla "clasificación" puedes añadir un nuevo campo, por ejemplo " nuevo nombre serie", donde pongas los nuevos nombres.

Al no modificar los datos originales, ya tienes asociados los libros con los nuevos nombres, lo único que has de hacer es modificar el cuadro combinado para que en vez de la columna "nombre serie" coja la nueva "nuevo nombre serie".

Respuesta
1

Carlos, voy a hacer una pregunta tonta. ¿Por qué no haces una consulta de actualización que te cambie los nombre antiguos de "Horror" por los nuevos de "Terror"?.

Gracias por contestar tan rápido,

El problema es que los jefes quieren conservar los nombres antiguos de las series.

Hay más de 100 nombres antiguos de series con sus equivalentes nombres nuevos. Y más de 100.000 libros.

No se trata de substituir los nombres antiguos por los nuevos.Si no de que el usuario seleccione en un cuadro combinado una serie nueva, access detecte su equivalente de serie antigua, y muestre todas las cajas relacionadas con esta serie antigua.

Tal vez creando relaciones o añadiendo columnas a las tablas.

Es un poco lío.

Si no son muchos los cambios, quizá no te haga falta. Voy a usar la tabla Clientes de la base Neptuno y los países. Los "libros" cuyo género antes era Alemania ahora son German y los que antes eran España ahora son Spain

En un formulario pongo un combinado donde elijo el "género"

Si elijo German

Me saca los del género Alemania y los del género German. Si hubiera elegido Spain

En este caso en el código del evento Después de actualizar del combinado al que he llamado elegir le he puesto

Private Sub Elegir_AfterUpdate()
Select Case Elegir
Case Is = "German"
Me.RecordSource = "select * from paises where pais like ""Alemania"" or pais like ""German"""
Case Is = "Spain"
Me.RecordSource = "select * from paises where pais like ""España"" or pais like ""Spain"""
End Select
End Sub

Si fueran muchos cambios en los géneros habría que pensar otra cosa.

No había leído entera la pregunta. Dices que hay 100.000 libros con el nombre de la serie(¿género?) Antigua y el moderno. ¿Es eso cierto?, que la tabla tiene, por ejemplo, un campo GéneroAntiguo y otro campo Género Moderno.

Si es eso, es chupado. En el combinado Elegir puedes poner

me.recordsource="select * from NombreTabla where GeneroAntiguo='" & me.elegir & "' or generoNuevo='" & me.elegir.column(1) & "'", y tu decides la columna que enseñas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas