Suche…


Einführung

Formelspalten in gespeicherten Suchen können viele Funktionen von Oracle SQL und HTML nutzen. Die Beispiele zeigen, wie diese Funktionen verwendet werden können, und es gibt zu vermeidende Fallstricke.

Oracle SQL CASE-Anweisung in einer Netsuite-Formel

Verwenden Sie eine CASE-Anweisung, um einen Ausdruck in der Spalte bedingt darzustellen, der auf Werten basiert, die in einer anderen Spalte ("Mein Reich für ein ODER") gefunden werden. Im Beispiel wird das Ergebnis erhalten, wenn der Status der Transaktion " Pending Fulfillment oder " Partially Fulfilled lautet:

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

Analysieren eines hierarchischen Datensatznamens mit einem regulären Ausdruck

Analysieren Sie mithilfe eines regulären Ausdrucks einen Datensatznamen, der möglicherweise hierarchisch ist. Der Ausdruck sucht nach dem letzten Doppelpunkt im Namen. Gibt zurück, was auf den Doppelpunkt folgt, oder den gesamten Namen, wenn keiner vorhanden ist:

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

Erstellen Sie eine komplexe Zeichenfolge, indem Sie mehrere Felder verketten

Im Beispiel wird eine Zeichenfolge aus dem Namen des übergeordneten Datensatzes, dem Namen dieses Datensatzes und dem Memo dieses Datensatzes erstellt.

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

Passen Sie das CSS (Stylesheet) für eine Spalte an, indem Sie ein DIV-Element einfügen

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

Schützen Sie Stringformeln vor Korruption und Injektionsangriffen

Beachten Sie, dass einige Werte in einem Zeichenfolgenformel Teilzeichenfolgen enthalten, die für den Browser wie HTML aussehen. Wenn dies nicht beabsichtigt ist, ist es wichtig, die Werte vor Korruption zu schützen. Dies ist nützlich, um Injektionsangriffe zu vermeiden: Es verhindert, dass jemand HTML-Code in ein Kommentarfeld in einer Webreihenfolge eingibt, die später vom Kundendienstmitarbeiter interpretiert wird.

htf.escape_sc( Ausdruck )

Schützen Sie Feldwerte vor Beschädigungen beim Durchleiten einer URL

utl_url.escape( Ausdruck )

Testen Sie den Wert von "mainline" in einer SQL CASE-Anweisung

In einer gespeicherten Suchformel sind die möglichen Werte von mainline so gestaltet, dass sie in einem HTML-Kontext nützlich sind. Wenn mainline true ist, ist der Wert von {mainline} die 1-stellige Zeichenfolge * (Sternchen). Wenn mainline den Wert false hat, ist der Wert von {mainline} der 6-stellige String &nbsp; (geschützte Leerzeichen, HTML-Code als Zeichenentitätsreferenz). Diese Zeichenfolgenwerte können in einem SQL-Kontext mit Zeichenfolge-Literalen verglichen werden.

CASE
WHEN {mainline} = '*' THEN Ausdruck-wenn-wahr
WHEN {mainline} = '&nbsp;' THEN Ausdruck-wenn-falsch
END

Komplexes, reales Beispiel

Das folgende Beispiel kombiniert mehrere der hier behandelten Techniken. In einer benutzerdefinierten formatierten Spalte wird ein Hyperlink eingefügt, der beim Klicken den mit einer Zeile verknüpften Kundenauftragsdatensatz öffnet. Der Hyperlink soll den Datensatz in einem neuen Fenster oder auf einer neuen Registerkarte öffnen, wenn er angeklickt wird, und eine QuickInfo anzeigen, wenn er im Hover-Modus ist. Das in der URL verwendete internalid Feld ist vor der URL-Codierung geschützt. Der Kundenname wird, sofern verfügbar, in derselben Spalte angezeigt und ist vor HTML-Kodierung geschützt.

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

Datensätze mit und ohne Wert in einem Feld zählen (Anzahl der fehlenden und nicht fehlenden Werte zählen)

Mit der NVL2() Funktion von Oracle SQL können Sie eine Anzeigespalte erstellen, die einen Wert enthält, wenn ein Feld Daten enthält, und einen anderen Wert, wenn ein Feld keine Daten enthält. Verwandeln Sie beispielsweise bei einer Entitätssuche das Vorhandensein einer primären E-Mail-Adresse in eine Textanzeigespalte:

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

Auf diese Weise können Sie Datensätze zählen, die durch das Vorhandensein oder Nichtvorhandensein einer E-Mail-Adresse gezählt wurden:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow