Access - Filtrar lista a partir de la columna de otra lista

 
Vista:
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 15/10/2017 02:27:38
Buenas comunidad, estoy tratando de hacer algo que hasta el momento considero complejo, y es poder filtrar un cuadro de lista, a partir de la columna de otro cuadro de lista, con la intención de obtener datos que no esten asociados

Antes de seleccionar una marca



1LFGJoa


Luego de seleccionar una marca



jItqkIe

En la imagen anterior, se puede ver que selecciono la marca Frito Lay, y me filtra la lista que esta en el medio, mostrándome, solo lo que esta relacionado con esa marca, pero en la lista que esta al lado, que es de categorias, solo deberia aparecer una sola, ayq que de las tres registradas, solo una no esta relacionada con ninguna otra marca, y es la categoría o linea chocolatinas.

Las relaciones entre las tablas es la siguiente

kPix6j3

Se me vino a la mente esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
filas_lista = Me.Lista1.ListCount
 
    For Fila = 0 To cantidad - 1
 
        cod_categoria = Me.Lista1.Column(3, Fila)
 
        consulta = "SELECT Categorias.Id_Categoria_Auto, Categorias.Nombre_Categoria" & _
                   " FROM Categorias" & _
                   " WHERE (((Categorias.Id_Categoria_Auto)<>" & cod_categoria & "))"
 
        Me.lista_categoria_union.RowSource = consulta
         Me.lista_categoria_union.Requery
 
    Next Fila

Recorrer la lista filtrada, y apartir de alli, solo dejar en la lista categoría los que no se repitan, pero solo filtra por el último y no mantiene como una especie de historial
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Filtrar lista a partir de la columna de otra lista

Publicado por Anonimo (3319 intervenciones) el 15/10/2017 05:55:46
Yo lo plantearía de otra forma ....

Una vez seleccionada una marca:

.- Una consulta de no coincidentes con las tablas (T_Marc_Categ) + categorías) filtrando con la marca, devolvería el origen de datos deseado para la lista Categorías.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 16/10/2017 03:08:32
Gracias amigo, me estaba pegando un tiro yo mismo en el pie con esa locura que iba hacer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 16/10/2017 04:59:39
disculpa, solo me funciono, una sola vez, o dos veces como mucho, no entiendo que pasa, te voy a pegar aqui la informacion y la imagenes, espero puedas echarle un ojo

marcas
ST8oOlS


categorias
sUsa3xG

tabla intercepto
0fF9yFv

relaciones
miPYwn4

resultado
oeeBuoe

Si te fijas el resultado es Galletas, y en verdad debería ser chocolatina

1
2
3
4
SELECT Categorias.Id_Categoria_Auto, Categorias.Nombre_Categoria
FROM Categorias INNER JOIN T_Marc_Categ ON Categorias.Id_Categoria_Auto = T_Marc_Categ.Nomb_Linea
WHERE (((T_Marc_Categ.Nomb_Marca)<>61))
ORDER BY Categorias.Nombre_Categoria;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar lista a partir de la columna de otra lista

Publicado por Anonimo (3319 intervenciones) el 16/10/2017 14:54:12
Hay algunas diferencias a la hora de plantear la aplicación y sus tablas.

Lo primero es que si a un campo (de una tabla) le adjudico un nombre descriptivo, mantengo el nombre en cada ubicación y si hubiera conflictos le antepongo el apellido (nombre de su tabla) y volvería a recuperar la propiedad de único.

No tengo nada clara la supuesta utilidad de un ID único en la tabla que denominas 'intercepto' su 'unicidad' vendría dada por el binomio (pareja) de los IDs categoría + marca (su propiedad 'único' la genera un índice).

Tabla 'categorias':
Campos : ID_Categoria (autonumerico), Descripción (texto)
Valores:
1 ......... galletas
2 ........ chocolatinas
3 ........ frituras


Tabla 'marcas':
Campos : ID_Marca (autonumerico), Descripción (texto)
Valores:
1 ......... Oreo
2 ........ Frito Lay
3 ........ KitKat


Tabla 'Intercepto':
Campos : ID_Marca (numerico), ID_Categoria (numérico)
un índice: Nombre_P // campos: ID_Marca (ascendente), Id_Categoria (ascendente) // Principal : NO // Unica: Sí // Omitir nulos: Sí
Valores:
1 ......... 1
2 ......... 1
2 ......... 3

Relaciones
Marcas.ID_Marca (1) <===> Intercepto.ID_Marca (N)
Categorias.ID_Categoria (1) <===> Intercepto.ID_Categoria (N)


Una consulta que devuelva las categorías de las que carece una marca, requiere generar una lista de las categorías que si posee y podría ser algo asi:
1
2
3
SELECT  Intercepto.ID_Categoria, Categorias.Descripcion
FROM Categorias RIGHT JOIN Intercepto ON Categorias.ID_Categoria = Intercepto.ID_Categoria
WHERE intercepto.ID_categoria Not In (Select Id_Categoria from intercepto Where intercepto.id_marca =1);
Normalmente se suelen crear dos consultas que interactúan (una genera la lista, otra las diferencias) pero existe la posibilidad de las sustituciones (que es la que he aplicado aquí para hacerlo en una sola consulta)

Quizas te preguntes porque he recreado las tablas .... es que esa extraña mezcla de nombres genera confusión (o al menos me la genera a mi)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 16/10/2017 17:36:15
Creo que te he logrado entender, lo del nombre de la tabla intercepto, y como entiendo, ponerle llave primaria a dicha tabla no es correcto, ya que las llaves deberán ser los id de las tablas que se cruzan, voy a probar, la consulta que colocas ali, y de paso, modificar el nombre de los campos, gracias, pruebo y coloco la respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 16/10/2017 19:16:16
Aquí dejo la nueva relación, no funciona, al menos no como yo esperaba

A8NrJo4

Dejare adjunto un comprimido de alguien que logro hacerlo de una forma que no comprendo seguire intentando a ver si logro entender lo que hizo la pesona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtrar lista a partir de la columna de otra lista

Publicado por Anonimo (3319 intervenciones) el 17/10/2017 18:01:37
El enlace que has puesto ... tiene autoría y (según creo) su autor además del ejemplo acostumbra a adjuntar un documento aclarativo de su funcionalidad.

Como creo que también utilizas como recurso el foro de ese autor ¿no seria lo correcto que él (que lo conoce como autor del ejemplo) te aclarase las dudas?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtrar lista a partir de la columna de otra lista

Publicado por pedro (54 intervenciones) el 20/10/2017 00:00:16
Tienes razon, pero lo solucione de otra forma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar