Función setValue

Parent Previous Next



Se utiliza para cambiar el valor de un campo específico en otra forma en lo(s) registros(s) que cumplan con el filtro.


Sintaxis:


setValue(parametro1, parametro2, parametro3)


Parametro1: Es el nombre del campo de la otra forma al cual se le asignará un nuevo valor, se deberá escribir con corchetes cuadrados y entre comillas sencillas o dobles.  Ejemplo: “FORM[Pedido].FIELD[Status]”.

Parametro2: Es el valor que se le asignará al campo definido en el Parametro1 escrito entre comillas dobles o sencillas. También es posible definirlo a través de un campo de la forma del evento, en tal caso no va con comillas solo con corchetes cuadrados.

Parametro3: Es el filtro  que define qué registros de la otra forma se verán afectados, el cual debe especificarse como cadena entre comillas para que sea recibido por la función setValue.


Sintaxis:


setValue('FORM[OtraForma].FIELD[CampoOtraForma]','ValoraCambiar','FORM[OtraForma].FIELD[OtroCampoOtraForma]=FORM[FormaEvento].FIELD[CampoFormaEvento]'),


Si se va a usar esta funcionalidad entre una forma (maestra) y una forma detalle (hija), en este parámetro, se pueden usar las llaves RowID y MasterID, que son los campos internos que permitirán localizar el registro de la forma padre.  En donde  RowID es la llave del registro de la forma que se va a modificar (padre) y MasterID es la llave del registro que lanzó el evento (forma detalle).


Sintaxis:


setValue('FORM[DetalledelaForma].FIELD[CampoForma]','ValoraCambiar','FORM[FormaMaestra].FIELD[RowID]=FORM[DetalledelaForma].FIELD[MasterID.FormaMaestra]'),

También es posible condicionar el setValue en el Execute a través del if.


Sintaxis:

IF(condición,setValue(parametro1, parametro2, parametro3),setValue(parametro1, parametro2, parametro3))

ó

IF((FORM[DetalledelaForma].FIELD[CampoForma]='Valor' Operador FORM[DetalledelaForma].FIELD[CampoForma]='Valor'),setValue(' FORM[DetalledelaForma].FIELD[CampoForma]','ValoraCambiar','FORM[FormaMaestra].FIELD[RowID]=FORM[DetalledelaForma].FIELD[MasterID.FormaMaestra]'),'')


Donde:


Condición: Es la comparación del valor de un campo de la forma donde se define el evento, con el uso de operadores condicionales comunes (=, <>, <=, >=, <, >, and, or).


Ejemplo1:

En el campo Execute es posible insertar una instrucción como la que sigue:

IF((FORM[Oportunidades].FIELD[Estatus]) = "Win", setValue("FORM[Clientes].FIELD[Tipo de cliente]", "Customer", "FORM[Clientes].FIELD[Nombre del cliente] =FORM[Oportunidades].FIELD [Cliente]"), "")

En este ejemplo, si el campo Estatus de la forma Oportunidades es igual a “Win”, entonces se cambiara Tipo de Clientes de la forma Clientes a “Customer” en donde el Nombre del cliente de la forma Clientes sea igual al Cliente de la forma Oportunidades.

Cuando el usuario cambia o inserta un registro en la forma Oportunidades con Estatus = Win, entonces el cliente de esa oportunidad cambiará a tipo Customer.


Ejemplo 2: Usar una condición con AND

IF((FORM[Oportunidades].FIELD[Estatus]=’Win’ AND FORM[Clientes].FIELD[Tipo de cliente]='Mediana empresa'),setValue('FORM[Clientes].FIELD[Estatus de la cuenta]','Cliente activo','FORM[Clientes].FIELD[Nombre del cliente]=FORM[Oportunidades].FIELD[Cliente]'),'')

En este ejemplo, si el Estatus de la forma Oportunidades es igual a ‘Win’ y además el Tipo de Cliente de la forma Clientes es ‘Mediana empresa’, entonces el campo Estatus de la cuenta de la forma Clientes cambiará a Cliente activo, siempre y cuando el Nombre del cliente de la forma Clientes sea igual al Cliente de la forma Oportunidades. Si no se cumple la condición de ambos campos no se hará algo.


Ejemplo 3: El valor a enviar es el que tenga un campo

IF((FORM[Fuente].FIELD[Status]='Venta'),setValue('FORM[Destino].FIELD[Venta]',FORM[Fuente].FIELD[Numero],'FORM[Fuente].FIELD[Caso]=FORM[Destino].FIELD[Caso]'),'')

En este ejemplo, si el campo Status de la forma Fuente es igual a ‘Venta’, entonces va a poner el valor del campo Número de la misma forma al campo Venta de la forma Destino donde el campo Caso sea igual en ambas formas.

Observe cómo en la sintaxis el campo FORM[Fuente].FIELD[Numero] no va entre comillas, esto es porque lo que se quiere es pasar el valor del campo no el nombre del campo.


Nota: Por el momento no se están soportando expresiones aritméticas en el parametro2 de setValue


Ejemplo 4: Usar setValue también cuando la condición no se cumpla:

IF((FORM[Fuente].FIELD[Status]='Efectivo'),setValue('FORM[Destino].FIELD[Status]','Venta Efectivo','FORM[Fuente].FIELD[Caso]=FORM[Destino].FIELD[Caso]'),setValue('FORM[Destino].FIELD[Status]','Venta Crédito','FORM[Fuente].FIELD[Caso]=FORM[Destino].FIELD[Caso]'))

Este caso establece un valor ‘Venta Efectivo’ para el campo Status de la forma Destino siempre y cuando el valor de Status de la forma Fuente sea ‘Efectivo’, de lo contrario el valor que establecerá en el campo Status es ‘Venta Crédito’.


Ejemplo utilizando RowID y MasterID:

En este ejemplo si el estatus de Oportunidades es 'Venta ganada' y si la Línea de negocio de Oportunidades es Uniformes, entonces se cambiará el valor a 'Cliente activo' del registro del Maestro Clientes (FORM[Clientes].FIELD[RowID]) que sea igual al Cliente que está en la Oportunidad (FORM[Oportunidades].FIELD[MasterID.Clientes]).

Es decir, el RowID y el MasterID van a identificar a partir de un registro detalle cuál fue el maestro donde se originó.

IF((FORM[Oportunidades ].FIELD[Estatus]='Venta ganada' AND FORM[Oportunidades ].FIELD[Línea de negocio]='Uniformes'),setValue('FORM[Clientes].FIELD[Estatus de la cuenta]','Cliente activo','FORM[Clientes].FIELD[RowID]=FORM[Oportunidades ].FIELD[MasterID.Clientes]'),'')


Notas:

Al utilizar setValue no se requiere tener relación padre-hijo entre las formas ya que el cambio del valor está dado por el filtro únicamente, a partir del filtro se identifica cuáles actualizar.

Cuando se desee cambiar el valor de un campo de la misma forma en donde se ejecuta el execute se deberá utilizar el atributo defaultValue con el fin de evitar generar ciclos que causen errores en la funcionalidad de la app.

En el filtro no se pueden usar funciones o variables solamente hacer referencia a campos, la única excepción es username().


Created with the Personal Edition of HelpNDoc: Easily create EBooks