6 votos

¿Limitación de los valores de la lista en función del campo anterior en los formularios de QGIS?

Busco ayuda para establecer una configuración adecuada que permita filtrar los valores de las listas desplegables en función de un valor anterior.

Básicamente, tengo una estructura de categorización de 3 niveles para una de nuestras capas del SIG: Clase > Tipo > Subtipo.

Una vez seleccionada la clase, me gustaría que la lista de tipos se filtrara sólo a los valores relevantes para esa clase y lo mismo para el subtipo.

enter image description here

He convertido esto en tablas de atributos de la lista Code Value y cargado inot QGIS como tablas de atributos -

enter image description here

He utilizado estas tablas como listas de relación de valores en las propiedades del widget

enter image description here

Las listas desplegables funcionan bien sin filtro. Pero en cuanto intento añadir un filtro con una expresión, no aparece nada en mi desplegable... Si simplemente escribo "CLASS_ID" = 1 ... sí que limito la lista a sólo los de Clase = 1. La expresión por sí sola (attribute($currentfeature, 'LU_CLASS') rellena correctamente los valores enteros si la utilizo para rellenar un campo virtual en el constructor de expresiones...

¿Alguien puede orientar sobre por qué esto no funciona en el filtro del widget?

También he intentado (brevemente) establecer una relación en las propiedades del proyecto... pero parece que lo estoy haciendo mal... los registros no son hijos ni están relacionados con esta otra tabla - simplemente quiero usarlos para rellenar listas desplegables.

¿Me falta un simple paso?

5voto

kce Puntos 9227

$currentfeature se refiere a la capa relacionada (Type_Values en su ejemplo) por lo que la expresión siempre devuelve false y todos los valores se filtran.

Ver: https://lists.osgeo.org/pipermail/qgis-developer/2015-November/040382.html

4voto

kce Puntos 9227

Acabo de publicar un plugin que permite el drill-down y otros filtros complejos de valores en un formulario, echa un vistazo:

http://www.itopen.it/a-new-qgis-plugin-allows-dynamic-filtering-of-values-in-forms/

2voto

user49581 Puntos 16

Necesitaba algo similar y en mi caso lo hice funcionar cambiando su expresión:

"CLASS_ID" = attribute( $currentfeature, 'LU_CLASS')

para

"CLASS_ID" = current_value('LU_CLASS')

Breve explicación:

Como @elpaso66 notado $función actual hace referencia a la capa relacionada (Type_Values en el ejemplo anterior) y necesitamos una referencia al elemento que se está editando en ese momento, por lo que tenemos current_value('campo') que nos permite seleccionar el valor de un campo en el elemento que estamos editando.

De esta forma podemos filtrar la clave de la capa relacionada (Type_Values en el ejemplo anterior) con el valor del fileld que queremos utilizar como filtro (LU_CLASS en el ejemplo anterior)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X