Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Saber elementos seleccionados para cálculos posteriores

   Hola tengo el siguiente problema, yo hago unos cálculos que van en función de los días que se seleccione. Como selectores de fecha tengo por separado dia, mes y año. Mi duda por ejemplo es primero detectar que tengo seleccionado, si yo utilizo:

    GetFieldSelections(dia)   y tengo varios días seleccionados me aparece por ejemplo 11 de 31, pero no me aparece que días son los que tengo seleccionados, porque aparte de saber el número de días seleccionados, yo puedo querer saber que días son, porque hago un cálculo que afecte a los últimos 7 días de la selección

    Y por otra parte, el mes de febrero de un año puede tener 28 dias y el mes de febrero de otro 29, con que función consigo yo sacar por ejemplo el número de dias de febrero de 2013, o de febrero de 2016

Un saludo

1 Solution

Accepted Solutions
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola:

getfieldselections ( Dia, '; ' , 31)

Saludos

Joaquín

View solution in original post

10 Replies
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola:

getfieldselections ( Dia, '; ' , 31)

Saludos

Joaquín

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Jonay:

Respecto al número de días de febrero no lo conseguirás, el comportamiento asociativo de QV funciona así.

Quizá usar un objeto calendario te ayude, pero necesitas tener un campo fecha; además del día, mes y año.

Saludos,

Joaquín

Anonymous
Not applicable
Author

Buenas Joaquín, mirando por google descubrí  la expresión que dices, y si aparece el listado completo. Mi duda ahora es como procesar esa información, porque si fuera en un lenguaje normal, bastaria con hacer un for y usar una variable auxiliar para ir acumulando los calculos. Pero dentro de qlikview no se si la manera de pensar es la misma (ya que tiene for, variables, etc) o si por el contrario difiere la forma de hacerlo

Un saludo

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Puedes copiar aquí la expresión que usas para hacer esos cálculos?

Anonymous
Not applicable
Author

Buenas Joaquín, este es un ejemplo de un cálculo que hago

count({<año = {2015}, mes = {02}>} ID)/28

Como ves en este caso, lo puse a mano el año, el mes,  y también puse los 28 días de febrero. Lo que yo querria es hacer ese calculo en base a una selección

suponiendo que se ha seleccionado por poner un ejemplo los días 13,14,15,16 de febrero de 2015

Entonces me surge la duda de si se puede poner dia = diasseleccionados de alguna forma, no se como se pondría esa igualdad y por otra parte me surge la duda de como saber que el número de dias seleccionados es 4, se me ocurrio poner la funcion count(getfieldselection (dia,',',31)), pero eso no funciona

Un saludo

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II


count({<año = {2015}, mes = {02}>} ID) / getselectedcount(dia)


Extraído de la ayuda


getselectedcount(NombredeCampo [, IncluirExcluidos])

Develve el número actual de valores seleccionados en un campo

Si IncluirExcluidos es verdadero, el contador incluirá los valores seleccionados, los cuales están actualmente excluidos por las selecciones en otros campos. Si es falso o está omitido, dichos valores no serán incluidos.

Ejemplos

getselectedcount ( Año )

getselectedcount ( Año, true( ) )

Anonymous
Not applicable
Author

Hola Joaquín, lo del conteo que me comentas funciona, tambien "descubri" como ponerle valores para hacer los conteos en base a las selecciones

dia = $::dia

Ahora la duda que tengo es: nostros tenemos la función isnull, que se supone que devuelve verdadero o falso, yo necesito poner que si una condición es falsa me haga una determinada cosa

estoy poniendo if (isnull(GetFieldSelections(dia) = 'false')  pero ese false no me lo tiene en cuenta, de que forma puedo poner que si no hay ningun dia seleccionado,  es decir, si dia seleccionado es falso, hacer lo que necesite. Use isnull porque es la única forma que se me ocurrió

Un saludo

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Aquí tienes

if (isnull(GetFieldSelections(dia), 'Accion True', 'Accion False')


Aunque igual quieres esto


if (isnull(GetFieldSelections(dia), 30, GetFieldSelections(dia))

Anonymous
Not applicable
Author

Lo que yo quiero decir es, if isnull es falso, que es como decir, que no ha hecho una seleccion de día me haga tal accion

  habria que poner if (isnull (GetFieldSelections(dia) = false, hazme lo que necesito, hazme otra cosa)

Debo poner lo del false porque debo comprobar las selecciones de varios campos para realizar unos calculos

La cuestión es que no se como indicar ese valor falso a la función