Sök…


Introduktion

Formelkolumner i sparade sökningar kan utnyttja många funktioner i Oracle SQL och HTML. Exemplen visar hur dessa funktioner kan användas samt fallgropar som ska undvikas.

Oracle SQL CASE-uttalande i en Netsuite-formel

Med hjälp av ett CASE-uttalande kan du villkorligt visa ett uttryck i kolumnen baserat på värden som finns i en annan kolumn, alias "mitt rike för en OR". I exemplet erhålls resultatet när transaktionens status är Pending Fulfillment eller Partially Fulfilled :

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

Analysera ett hierarkiskt postnamn med ett vanligt uttryck

Använd ett vanligt uttryck och analysera ett postnamn som kan vara hierarkiskt. Uttrycket letar efter den sista kolon i namnet. Det returnerar vad som följer kolon, eller hela namnet om inget:

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

Bygg en komplex sträng genom att sammanfoga flera fält

Exemplet bygger en sträng från namnet på överordnad post, namnet på denna post och memo för denna post.

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

Anpassa CSS (stilark) för en kolumn genom att infoga ett DIV-element

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

Skydda strängformler från korruption och injektionsattacker

I ett strängformulärfält, tänk på att vissa värden kan innehålla underlag som ser till webbläsaren som HTML. Om inte detta är avsiktligt är det viktigt att skydda värdena mot korruption. Detta är användbart för att undvika injektionsattacker: det förhindrar att någon skriver HTML i ett kommentarfält i en webborder som senare tolkas på skrivbordet hos kundservicerepresentanten.

htf.escape_sc( uttryck )

Skydda fältvärden från korruption när du går igenom en URL

utl_url.escape( uttryck )

Testa värdet på "mainline" i ett SQL CASE-uttalande

I en sparad sökformel är de möjliga värdena på mainline utformade för att vara användbara i ett HTML-sammanhang. När mainline är sant är värdet på {mainline} strängen med 1 tecken * (asterisk). När mainline är falsk är värdet på {mainline} 6-teckensträngen &nbsp; (icke-brytande utrymme, HTML kodat som en karaktärsreferens). Dessa strängvärden kan jämföras med strängbokstäver i ett SQL-sammanhang.

CASE
WHEN {mainline} = '*' THEN uttryck-när-sant
WHEN {mainline} = '&nbsp;' THEN uttryck-när-falsk
END

Komplexa verkliga exempel

Följande exempel kombinerar flera av de tekniker som behandlas här. Den sätter en hyperlänk i en anpassad formaterad kolumn som, när man klickar på, öppnar försäljningsorderposten som är associerad med en rad. Hyperlänken är utformad för att öppna posten i ett nytt fönster eller flik när du klickar på det, och för att visa ett verktygstips när du håller muspekaren. Det internalid fältet som används i URL: n är skyddat från URL-kodning. Kundnamnet, när det är tillgängligt, visas i samma kolumn, skyddad från HTML-kodning.

'<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>'

Räkna poster med och utan ett värde som anges i ett fält (räkna saknade och icke-saknade värden)

Med hjälp av Oracle NVL2() -funktion kan du skapa en visningskolumn som innehåller ett värde om ett fält innehåller data och ett annat värde om ett fält inte innehåller data. Till exempel, i en enhetssökning, förvandla närvaron av en primär e-postadress till en textvisningskolumn:

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

Detta gör att du kan räkna poster subtalerade av närvaron eller frånvaron av en e-postadress:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow