Google
Búsqueda personalizada

Navision ERP : ValueIsFilter

Atendiendo a la explicación que se proporciona en la "Guia del Diseñador de Aplicaciones" de Navision:

"La opción 'ValueIsFilter' determina cómo el sistema interpreta el contenido del campo a que se refiere en la columna 'Value' en la ventana del Table Filter. Por ejemplo, si el campo contiene el valor 1000 .. 2000, establecer la opción 'ValueIsFilter' hará que este valor deba interpretarse como un filtro y no como un valor específico".

Investigando un poco más sobre esta perogrullada, podria decirse que esta opción actua en aquellos campos donde su contenido puede ser expresado como un rango de valores, por ejemplo los campos de tipo "Text" podriamos imaginar un rango de numeros de cuenta en un campo llamado: 
Numeros Cuenta = "0000000254..0000000256”

En tal caso, si la opción ‘ValuelsFilter’ no está activada, tratará de aplicar el filtro mediante el valor textual literal: “0000000254..0000000256” (para el supuesto de un número de cuenta).

EJEMPLO1: Si tengo un campo de tipo 'Text' llamado:

Numero Cuenta = “0000000255”
 
Si no seleccionamos la opción 'ValueIsFilter', entonces el sistema tratará de hacer esta comprobación literalmente:
¿Numero de Cuenta = Numeros de Cuenta?

Es decir: ¿”0000000255” = “0000000254..0000000256”?
La respuesta será False y el campo será excluido del filtrado.

En cambio, si tenemos seleccionada la opción 'ValueIsFilter' el sistema hará las siguientes comprobaciones:
¿“0000000255” = “0000000254”? -> FALSE
¿“0000000255” = “0000000255”? -> TRUE!
(Con lo que el campo no será excluido del filtrado).


EJEMPLO2: DEFINICIÓN DEL CAMPO CALCULADO ‘Balance at Date’ (Tabla: G/L Account).

En la tabla ‘G/L Account’ se define un campo calculado llamado ‘Balance at Date’. Tal y como se muestra en las Figuras (1) y (2), dicho campo posee una fórmula de cálculo en su propiedad ‘CalcFormula’:

Figura 1: Formula de cálculo (propiedad ‘ CalcFormula’ del campo calculado ‘Balance at Date’).

Figura 2: Ventana Table Filter de la propiedad ‘CalcFormula’ del campo calculado (FlowField) ‘Balance at Date’.
De varias entradas que dispone la ventana del Table Filter, vamos a fijarnos en la que se encuentra en rojo en la Figura 2 y que viene definida de la forma siguiente:

G/L Account No.=FIELD(FILTER(Totaling))
El campo ‘G/L Account No.’ se encuentra en la tabla ‘G/L Entry’ y el campo ‘Totaling’ en la tabla ‘G/L Account’.

Como se puede observar en la Figura 2, la entrada en rojo tiene activada la opción ‘ValueIsFilter’. Si investigamos la diferencia respecto al resto de entradas que no tienen activada esta opción podemos observar que el contenido del campo ‘Totaling' (Sumatorio), es el mostrado en la Figura 3 y el contenido del campo ‘G/L Account No.’ Es el mostrado en la figura 4:
Figura 3: Contenido del campo ‘Totaling’ (Sumatorio)

Figura 4: Contenido del campo ‘G/L Account No.’ (Número de cuenta)
Ambos campos ‘G/L Account No.’ y ‘Totaling’ son de tipo ‘Text’.

De esta forma, la entrada mostrada en rojo en la Ventana Table Filter (Figura 2), SI NO TUVIERA SELECCIONADA la opción ‘ValueIsFilter’, se traduciría en la expresión:

G/L Account No.=FIELD(Totaling)
y realizaria comparaciones del estilo:

¿“1000001” = “101..101999999999999”?
Obviamente, este tipo de comparaciones siempre darían un valor FALSE para esta condición del WHERE de la consulta que calcula los valores para el campo calculado ‘Balance at Date’.

En cambio, si seleccionamos la opción ‘ValueIsFilter', las comparaciones en expresiones de rango se toman como tal y el sistema realizaría comparaciones del estilo:

¿“1000001” = “101”? -> FALSE
¿“1000001” = “102”? -> FALSE
:
¿“1000001” = “1000001”? -> TRUE
(Con lo que para este caso, esta condición del WHERE seria verdadera)

0 comentarios:

    Facebook

    Seguidores