Zoeken…


Invoering

Formulekolommen in opgeslagen zoekopdrachten kunnen gebruikmaken van veel functies van Oracle SQL en HTML. De voorbeelden laten zien hoe deze functies kunnen worden gebruikt, evenals valkuilen die moeten worden vermeden.

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 &nbsp; (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} = '&nbsp;' 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' )


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow