Crear tabla con campos de una relación

Estoy teniendo problemas para crear una tabla con datos de una relación. A ver si me explico bien. Tengo una tabla códigos y otra tabla categorías. La tabla códigos tiene unas referencias únicas y el la tabla categorías estan las referencias con la categoria correspondiente. Hay referencias que pertenecen a 1 categoría y otras que corresponden a varias categorías. Mi problema es que quiero crear una tabla con los campos Referencia y categoría1, categoría2, etc... Depende de las categorías que tenga cada referencia. No consigo crear dicha tabla.

No sé si me he explicado bien.

Respuesta
1

Vamos a ver si me explico, que siempre es lo más difícil. Supongamos que tengo una tabla Codigos

Y una tabla Referencias

Creo una consulta como la de la imagen, para que me diga cuantas veces se repite un código y le añado un campo Orden, que por un lado me va a decir lo anterior y me servirá luego para el código

Con lo cual al abrirla

Puedes ver que el código 11111, por ejemplo, tiene tres registros

Por último tengo la tabla Resumen

En el formulario Referencias le pongo un botón

Que al pulsarlo me deja la tabla Resumen como

El código del botón es

Private Sub Comando5_Click()
DoCmd.RunSQL "insert into resumen(codigo) select codigo from referencias group by codigo"
DoCmd.GoToRecord , , acFirst
Dim i As Byte
For i = 1 To Me.Recordset.RecordCount
If DLast("orden", "consulta1", "codigo='" & Me.Codigo & "'") = 1 Then
DoCmd.RunSQL "update resumen set ref1= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=1"") where codigo='" & Me.Codigo & "'"
ElseIf DLast("orden", "consulta1", "codigo='" & Me.Codigo & "'") = 2 Then
DoCmd.RunSQL "update resumen set ref1= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=1"") where codigo='" & Me.Codigo & "'"
DoCmd.RunSQL "update resumen set ref2= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=2"") where codigo='" & Me.Codigo & "'"
ElseIf DLast("orden", "consulta1", "codigo='" & Me.Codigo & "'") = 3 Then
DoCmd.RunSQL "update resumen set ref1= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=1"") where codigo='" & Me.Codigo & "'"
DoCmd.RunSQL "update resumen set ref2= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=2"") where codigo='" & Me.Codigo & "'"
DoCmd.RunSQL "update resumen set ref3= dlookup(""referencia"",""consulta1"",""codigo='" & Me.Codigo & "' and orden=3"") where codigo='" & Me.Codigo & "'"
End If
DoCmd.GoToRecord , , acNext
Next
End Sub

Es decir, primero inserta los códigos y luego va actualizando los campos en función de si en la consulta el último valor del campo Orden es 1, 2 ó 3

¿Qué quieres añadirle mas campos a la tabla Resumen? Basta con añadir condiciones ELSEIF a la instrucción.

1 respuesta más de otro experto

Respuesta
1

No se si Entendí del Todo. Pero Aquí Vamos... Puedes Mirar Este Ejemplo.

Puedes crearte la Tabla (tb_Categoria) con los Campos y Propiedades siguientes.

Campo 1: Id ( Como Llave principal; Indexado sin Duplicado; y Requerido: Si)

Campo 2: Nombre_Categoria  (Indexado sin Duplicado; y Requerido: Si; Permitir Longitud Cero: No)

Luego, puedes crear una Tabla (tb_Codigos) con siguientes campos y propiedades Campos:

Campo 1: Referencia (Como Llave principal; Indexado sin Duplicado; y Requerido: Si)

Campo 2: Categoria: (En la Pestaña Búsqueda de las Propiedades del Campo elijes: Mostrar Control: Cuadro Combinado; Tipo de Origen de la Fila: Tabla/Consulta; Origen de la fila: SELECT [tb_Categoria].Id, [tb_Categoria].Nombre_Categoria FROM tb_Categoria; ; Columna dependiente:1; Numero de Columna: 2; Ancho de Columna: 0cm;3cm;

Para Terminar Vas a Herramientas de Base de Datos, Luego Relaciones, allí... Arrastras el Campo Categoria.Value de la tabla  (tb_Codigos) hasta el Campo ID de la tabla (tb_Categoria); el tipo de Combinacion sera el 1. (Incluir solo las filas donde los campos combinados de ambas tablas sean iguales)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas