Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Selectores de fecha para 2 campos

Hola, tengo la siguiente duda, yo tengo unos selectores de fecha (dia, mes y año)  que se aplican a un campo fecha1 y yo quiero que puedan ser aplicables a un campo fecha2, pero no simultaneamente. Yo habia pensado algo así como un botón que si se pulsa se aplique a fecha1 y sino se pulse se aplique a fecha2. ¿ Es esto posible de hacer? ¿ Como controlo que si el boton esta pulsado se aplique a dia1,mes1 y año1 y sino esta pulsado se aplique a dia2,mes2y año2?

Un saludo

1 Solution

Accepted Solutions
Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Chicos, aquí os dejo mi app

View solution in original post

23 Replies
alex_millan
Creator III
Creator III

Hola,

desconozco cómo realizas la selección y cómo tienes configurados los selectores, pero te pongo un ejemplo de cómo se puede hacer por si puedes aplicarlo a tu aplicación.

Con el botón das el valor de la variable para que vaya cambiando entre 0 y 1.

Luego si la selección la realizas mediante cuadro de lista, configura el cuadro de lista para que muestre los valores en función de una expresión, por ejemplo:

If(vBoton = 0, Aggr(Only(Campo1),Campo1), Aggr(Only(Campo2),Campo2))

Un saludo

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Jonay:

Partiendo de una variable que pueda tener dos valores usa estas expresiones como dimensión calculada en tus selectores (normalmente son cuadros de lista):

If (vBotón = '1', Año1, Año2) ... para el selector de año

If (vBotón = '1', Mes1, Mes2) ... para el selector de mes

If (vBotón = '1', Dia1, Dia2) ... para el selector de dia


Obviamente Año1, Mes1 y Dia1 están asociados a Fecha1 y Año2, Mes2 y Dia2 están asociados a Fecha2


Saludos

Joaquón


Anonymous
Not applicable
Author

Wenas Alex, tengo un problema con la solución que me das y que no logro llegar a comprender porque. En el script yo defino una variable de la siguiente manera:

               let vFechaSeleccionada = 0;

Posteriormente, voy al cuadro de lista de año por ejemplo y defino la siguiente expresion:

=If(vFechaSeleccionada = 0, Aggr(Only(año1),año1), Aggr(Only(año2),año2))

(esto lo defino en lugar de campo, dicha expresion)

Entonces defino un boton, de la forma establecer valor de variable con la siguiente expresión:

     =IF(vFechaSeleccionada=1,0,1)

Entonces si yo pulso el botón, los años cambian adecuadamente. Mi problema viene a que si yo hago una selección de año1, esto repercute en año2 y tambien se me realiza selección, y es lo que no entiendo porque. Yo genero las fechas como 2 calendarios independientes al principio del fichero. Posteriormente sacare datos de una tabla, que tendran ambos campos, pero de momento esta comentado.

Este fichero en concreto tiene la peculiaridad que esta programado con estados, todos estos selectores, los he puesto para que afecten al estadoA, que es como originalmente está. Luego tendré que crear otro botón y aplicarle las mismas fórmulas al resto de selectores para que afecten al estadoB

¿Alguna sugerencia de que puede estar fallando?

Un saludo

alex_millan
Creator III
Creator III

Hola Jonay,

sin ver la estructura sólo es hacer hipótesis, pero en principio, nada tiene por qué estar fallando. Aunque generes dos calendarios independientes, si los dos campos afectan a las tablas de hechos es normal que se reduzcan los datos cuando haces selecciones en cualquiera de ellos.

¿Podrías enviar un pantallazo de tu estructura para echarle un vistazo?

Anonymous
Not applicable
Author

Wenas Alex, los campos afectan a una tabla, pero esa tabla ahora esta comentada, es decir, solo tengo 2 calendarios independientes entre si.

Si yo añado los campos, para seleccionarlos, y selecciono un valor de año1 y año2 en selecciones actuales si se refleja adecuadamente las selecciones que hago, pero si hago la selección a través del cuadro de lista es cuando no se me realizan adecuadamente las selecciones, sino que haciendo la selección en uno de los datos me selecciona en el otro campo valores.

Me he dado cuenta que si yo selecciono un valor en el selector de campo, en el cuadro de lista me sale como posible valor el seleccionado, pero no se me selecciona en si, ¿ ese comportamiento no es normal no? Captura1

En captura2 he seleccionado año2 = 2015, y se me selecciona por defecto año1 = 2013

captura1.jpgcaptura2.jpg

Un saludo

Anonymous
Not applicable
Author

Buenas Joaquín, tu forma tambien me falla. Me da el mismo error que la solución que me propone Alex. Funciona para cambiar el tipo de año (eso lo hace bien), pero si selecciono un año del campo año1, me hace seleccion de todos los años posibles de año2 y viceversa, si selecciono un año2 me selecciona todos los años posibles de año1.

Si yo en lugar de por ese cuadro de lista condicionado, selecciono los valores por selectores de campo (cuadro de lista individuales). En ese caso no me crea ningún tipo de error al filtrar y si me realiza bien la selección

¿Alguna sugerencia de donde puede estar el error?

Un saludo

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Jonay:

El botón de cambio de selector, también tiene que anular las selecciones sobre los campos. Revisa los disparadores 'Alternar Select' y 'Borrar otros campos' a ver cual se adapta mejor.

Seguro que los campos Fecha1 y Fecha2 están sin ninguna asociación ?

Saludos

Joaquín

Anonymous
Not applicable
Author

Buenas Joaquín,  los campos fecha1 y fecha2 los creo de la siguente manera:

Calendario1:

       load

       date(IterNo() + $(vMin)-1, 'DD/MM/YYYY') as fecha1

       AutoGenerate 1 while IterNo() + $(vMin) - 1 <= $(vMax);

      

       CalendarioMaestro1:

       load

        fecha1, year(fecha1) as año1

       resident Calendario1  ORDER BY fecha1 ASC;

      

        drop table Calendario1;

      

       Calendario2:

       load

       date(IterNo() + $(vMinInicio)-1, 'DD/MM/YYYY') as fecha2

       AutoGenerate 1 while IterNo() + $(vMinInicio) - 1 <= $(vMaxInicio);

      

       CalendarioMaestro2:

       load fecha2, year(fecha2) as año2

       resident Calendario2  ORDER BY fecha2 ASC; 

      

       drop Table Calendario2;

No están relacionados, porque la tabla que tiene para un id, una fecha1 y una fecha2, no la estoy cargando. Así que solo tengo 2 calendarios independientes entre si.

El botón lo creo con la siguiente acción (Establecer Variable):

vFechaSeleccionada

=IF(vFechaSeleccionada=1,0,1)

No entiendo muy bien la opción que propones para este contexto de "Alternar Select" o "borrar otros campos"

Gracias siempre por la ayuda de todos

Un saludo

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Jonay:

Los calendarios están separados, pero tendrás una tabla

Tabla:

LOAD ....

          Fecha1,

          Fecha2,

          ....

Por tanto, cualquier selección que hagas sobre Año1 o Año2 repercute a los datos que estás visualizando.

Igual que has creado la acción Establecer Variable tienes más acciones disponibles; si necesitas borrar las selecciones sobre un campo usa 'Borrar otros campos' si necesitas sustituir las selecciones de un campo por un valor por defecto usa 'Alternar Select'

Saludos

Joaquín