netsuite
Formulekolommen benutten bij opgeslagen zoekopdrachten
Zoeken…
Invoering
Oracle SQL CASE-instructie in een Netsuite-formule
Gebruik een CASE-instructie om voorwaardelijk een uitdrukking in de kolom weer te geven op basis van waarden in een andere kolom, ook bekend als 'mijn koninkrijk voor een OF'. In het voorbeeld wordt het resultaat verkregen wanneer de status van de transactie Pending Fulfillment
of Partially Fulfilled
:
CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN
uitdrukking-1
END
Een hiërarchische recordnaam parseren met een reguliere expressie
Gebruik een reguliere expressie om een recordnaam te parseren die mogelijk hiërarchisch is. De uitdrukking zoekt naar de laatste dubbele punt in de naam. Het geeft terug wat volgt op de dubbele punt, of de hele naam als er geen is:
regexp_substr( {name} , '[^:]*$' )
Bouw een complexe string door meerdere velden aaneen te voegen
In het voorbeeld wordt een tekenreeks opgebouwd uit de naam van het bovenliggende record, de naam van dit record en de memo van dit record.
{createdfrom} || ' ' || {name} || ' ' || {memo}
Pas de CSS (stylesheet) voor een kolom aan door een DIV-element in te voegen
'<div style="font-size:11pt">' ||
uitdrukking || '</div>'
Bescherm stringformules tegen corruptie en injectieaanvallen
Bedenk in een stringformuleveld dat sommige waarden substrings kunnen bevatten die op de browser lijken zoals HTML. Tenzij dit opzettelijk is, is het belangrijk om de waarden tegen corruptie te beschermen. Dit is handig om injectieaanvallen te voorkomen: het voorkomt dat iemand HTML invoert in een opmerkingenveld in een weborder die later wordt geïnterpreteerd op het bureau van de medewerker van de klantenservice.
htf.escape_sc(
expressie )
Bescherm veldwaarden tegen corruptie bij het passeren van een URL
utl_url.escape(
expressie )
Test de waarde van `mainline` in een SQL CASE-instructie
In een opgeslagen zoekformule zijn de mogelijke waarden van de mainline
ontworpen om nuttig te zijn in een HTML-context. Als mainline
waar is, is de waarde van {mainline}
de tekenreeks van 1 teken *
(asterisk). Als de mainline
onwaar is, is de waarde van {mainline}
de tekenreeks van 6 tekens
(niet-afbrekende spatie, HTML gecodeerd als een karakter entiteitsreferentie). Deze tekenreekswaarden kunnen worden vergeleken met tekenreeksliteralen in een SQL-context.
CASE
WHEN {mainline} = '*' THEN
expressie-wanneer-waar
WHEN {mainline} = ' ' THEN
uitdrukking-wanneer-onwaar
END
Complex, realistisch voorbeeld
Het volgende voorbeeld combineert verschillende van de hier behandelde technieken. Het plaatst een hyperlink in een aangepaste opgemaakte kolom die, wanneer erop wordt geklikt, het klantorderrecord opent dat aan een rij is gekoppeld. De hyperlink is ontworpen om het record in een nieuw venster of tabblad te openen wanneer erop wordt geklikt en om een knopinfo weer te geven wanneer u de muisaanwijzer plaatst. Het internalid
veld dat in de URL wordt gebruikt, is beschermd tegen URL-codering. De klantnaam, indien beschikbaar, wordt weergegeven in dezelfde kolom, beschermd tegen HTML-codering.
'<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>'
Tel records met met en zonder een waarde in een veld (tel ontbrekende en niet-ontbrekende waarden)
Met de NVL2()
-functie van Oracle SQL kunt u een weergavekolom maken die één waarde bevat als een veld gegevens bevat en een andere waarde als een veld geen gegevens bevat. Verander bijvoorbeeld bij een zoekopdracht op entiteit de aanwezigheid van een primair e-mailadres in een kolom voor tekstweergave:
NVL2( {email} , 'YES' , 'NO' )
Hiermee kunt u records tellen met subtotalen door de aanwezigheid of afwezigheid van een e-mailadres:
Field: Internal ID
Summary Type: Count
Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )