Recherche…


Introduction

Les colonnes de formule dans les recherches enregistrées peuvent exploiter de nombreuses fonctionnalités d'Oracle SQL et HTML. Les exemples montrent comment ces fonctionnalités peuvent être utilisées, ainsi que les pièges à éviter.

Instruction Oracle SQL CASE dans une formule Netsuite

En utilisant une instruction CASE, affichez de manière conditionnelle une expression dans la colonne en fonction des valeurs trouvées dans une autre colonne, appelée «mon royaume pour un OR». Dans l'exemple, le résultat est obtenu lorsque le statut de la transaction est Pending Fulfillment ou Partially Fulfilled :

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

Analyse d'un nom d'enregistrement hiérarchique à l'aide d'une expression régulière

À l'aide d'une expression régulière, analysez un nom d'enregistrement qui pourrait être hiérarchique. L'expression recherche le deux-points final dans le nom. Il retourne ce qui suit les deux points, ou le nom entier si aucun:

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

Construire une chaîne complexe en concaténant plusieurs champs

L'exemple génère une chaîne à partir du nom de l'enregistrement parent, du nom de cet enregistrement et du mémo de cet enregistrement.

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

Personnaliser le CSS (feuille de style) pour une colonne en insérant un élément DIV

'<div style="font-size:11pt">' || expression || '</div>'

Protégez les formules de chaînes contre la corruption et les attaques par injection

Dans un champ de formule de chaîne, considérez que certaines valeurs peuvent contenir des sous-chaînes qui ressemblent au navigateur HTML. À moins que cela ne soit intentionnel, il est important de protéger les valeurs de la corruption. Ceci est utile pour éviter les attaques par injection: il empêche une personne d'entrer du code HTML dans un champ de commentaire dans une commande Web qui sera interprétée ultérieurement sur le bureau du représentant du service clientèle.

htf.escape_sc( expression )

Protéger les valeurs de champ contre la corruption lors du passage par une URL

utl_url.escape( expression )

Tester la valeur de `mainline` dans une instruction SQL CASE

Dans une formule de recherche sauvegardée, les valeurs possibles de mainline sont conçues pour être utiles dans un contexte HTML. Lorsque mainline est true, la valeur de {mainline} est la chaîne de 1 caractère * (astérisque). Lorsque la mainline est fausse, la valeur de {mainline} est la chaîne de 6 caractères &nbsp; (espace insécable, HTML codé comme référence d'entité de caractère). Ces valeurs de chaîne peuvent être comparées avec des littéraux de chaîne dans un contexte SQL.

CASE
WHEN {mainline} = '*' THEN expression-when-true
WHEN {mainline} = '&nbsp;' THEN expression-when-false
END

Exemple complexe et réaliste

L'exemple suivant combine plusieurs des techniques abordées ici. Il place un lien hypertexte dans une colonne formatée personnalisée qui, une fois cliquée, ouvre l'enregistrement de commande client associé à une ligne. Le lien hypertexte est conçu pour ouvrir l'enregistrement dans une nouvelle fenêtre ou un nouvel onglet lorsque vous cliquez dessus, et pour afficher une info-bulle lorsque vous survolez. Le champ internalid utilisé dans l'URL est protégé du codage URL. Le nom du client, lorsqu'il est disponible, est affiché dans la même colonne, à l'abri de l'encodage 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>'

Compter les enregistrements avec avec et sans valeur fournie dans un champ (compter les valeurs manquantes et non manquantes)

A l'aide de la fonction NVL2() Oracle SQL, vous pouvez créer une colonne d'affichage contenant une valeur si un champ contient des données et une autre valeur si un champ ne contient pas de données. Par exemple, dans une recherche par entité, transformez la présence d'une adresse de messagerie principale en une colonne d'affichage de texte:

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

Cela vous permet de compter les enregistrements sous-totalisés par la présence ou l'absence d'une adresse électronique:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow