Buscar..


Introducción

Las columnas de fórmula en las búsquedas guardadas pueden explotar muchas características de Oracle SQL y HTML. Los ejemplos muestran cómo se pueden usar estas características, así como los errores que se deben evitar.

Sentencia Oracle SQL CASE en una fórmula Netsuite

Usando una declaración CASE, muestre condicionalmente una expresión en la columna basada en los valores encontrados en otra columna, también conocida como "mi reino para un OR". En el ejemplo, el resultado se obtiene cuando el estado de la transacción es Pending Fulfillment o Partially Fulfilled :

CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN expresión-1
END

Analizar un nombre de registro jerárquico usando una expresión regular

Usando una expresión regular, analice un nombre de registro que pueda ser jerárquico. La expresión busca los dos puntos finales en el nombre. Devuelve lo que sigue a los dos puntos, o el nombre completo si no hay ninguno:

regexp_substr( {name} , '[^:]*$' )

Construye una cadena compleja concatenando múltiples campos

El ejemplo crea una cadena a partir del nombre del registro principal, el nombre de este registro y la nota de este registro.

{createdfrom} || ' ' || {name} || ' ' || {memo}

Personalice el CSS (hoja de estilo) para una columna insertando un elemento DIV

'<div style="font-size:11pt">' || expresión || '</div>'

Proteger fórmulas de cadena de corrupción y ataques de inyección

En un campo de fórmula de cadena, considere que algunos valores pueden contener subcadenas que se parecen al navegador como HTML. A menos que esto sea intencional, es importante proteger los valores de la corrupción. Esto es útil para evitar ataques de inyección: evita que alguien ingrese HTML en un campo de comentarios en un pedido web que luego se interpreta en el escritorio del representante de servicio al cliente.

htf.escape_sc( expresión )

Proteger los valores de campo contra la corrupción al pasar a través de una URL

utl_url.escape( expresión )

Probar el valor de `mainline` en una sentencia CASE de SQL

En una fórmula de búsqueda guardada, los posibles valores de la mainline están diseñados para ser útiles en un contexto HTML. Cuando mainline es verdadero, el valor de {mainline} es la cadena de 1 carácter * (asterisco). Cuando mainline es false, el valor de {mainline} es la cadena de 6 caracteres &nbsp; (espacio de no ruptura, HTML codificado como una referencia de entidad de carácter). Estos valores de cadena se pueden comparar con literales de cadena en un contexto SQL.

CASE
WHEN {mainline} = '*' THEN expresión-when-true
WHEN {mainline} = '&nbsp;' THEN expresión-cuando-falso
END

Ejemplo complejo, del mundo real

El siguiente ejemplo combina varias de las técnicas cubiertas aquí. Coloca un hipervínculo en una columna con formato personalizado que, al hacer clic, abre el registro de pedido de ventas asociado a una fila. El hipervínculo está diseñado para abrir el registro en una nueva ventana o pestaña al hacer clic, y para mostrar una información sobre herramientas cuando se desplaza. El campo internalid usado en la URL está protegido de la codificación de la URL. El nombre del cliente, cuando esté disponible, se muestra en la misma columna, protegido de la codificación HTML.

'<div style="font-size:11pt">'
 ||
CASE {mainline}
WHEN '*' THEN '<br>' || htf.escape_sc( regexp_substr( {name} , '[^:]*$' ) ) || '<br>'
END
 ||
'<a alt="" title="Open the order associated with this line." '
 ||
'href="javascript:void(0);" onClick="window.open('''
 ||
'https://system.na1.netsuite.com/app/accounting/transactions/transaction.nl?id='
 ||
utl_url.escape( {internalid} )
 ||
''' , ''_blank'' )">'
 ||
{number}
 ||
'</a>'
 ||
'</div>'

Contar registros con y sin un valor proporcionado en un campo (contar valores perdidos y no perdidos)

Usando la función NVL2() Oracle SQL, puede crear una columna de visualización que contenga un valor si un campo contiene datos y otro valor si un campo no contiene datos. Por ejemplo, en una búsqueda de Entidad, convierta la presencia de una dirección de correo electrónico principal en una columna de visualización de texto:

NVL2( {email} , 'YES' , 'NO' )

Esto le permite contar los registros subtotalizados por la presencia o ausencia de una dirección de correo electrónico:

Field: Internal ID
Summary Type: Count

Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow