netsuite
Wykorzystywanie kolumn z formułami w zapisanych wyszukiwaniach
Szukaj…
Wprowadzenie
Instrukcja CASE Oracle SQL we wzorze Netsuite
Za pomocą instrukcji CASE warunkowo wyświetl wyrażenie w kolumnie na podstawie wartości znalezionych w innej kolumnie, czyli „moje królestwo dla OR”. W tym przykładzie wynik jest uzyskiwany, gdy status transakcji to Pending Fulfillment
lub Partially Fulfilled
Pending Fulfillment
:
CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN
wyrażenie-1
END
Analizowanie nazwy rekordu hierarchicznego przy użyciu wyrażenia regularnego
Używając wyrażenia regularnego, przeanalizuj nazwę rekordu, która może być hierarchiczna. Wyrażenie szuka ostatniego dwukropka w nazwie. Zwraca to, co następuje po dwukropku lub całą nazwę, jeśli nie ma:
regexp_substr( {name} , '[^:]*$' )
Zbuduj złożony ciąg, łącząc wiele pól
Przykład buduje ciąg z nazwy rekordu nadrzędnego, nazwy tego rekordu i notatki tego rekordu.
{createdfrom} || ' ' || {name} || ' ' || {memo}
Dostosuj CSS (arkusz stylów) dla kolumny, wstawiając element DIV
'<div style="font-size:11pt">' ||
wyrażenie || '</div>'
Chroń formuły strunowe przed atakami korupcyjnymi i iniekcyjnymi
W polu formuły łańcuchowej zastanów się, że niektóre wartości mogą zawierać podciągi, które wyglądają w przeglądarce jak HTML. O ile nie jest to zamierzone, ważne jest, aby chronić wartości przed korupcją. Jest to przydatne, aby uniknąć ataków polegających na wstrzykiwaniu: zapobiega wprowadzaniu kodu HTML w polu komentarza w zamówieniu internetowym, które później jest interpretowane na biurku przedstawiciela działu obsługi klienta.
htf.escape_sc(
wyrażenie )
Chroń wartości pól przed uszkodzeniem podczas przechodzenia przez adres URL
utl_url.escape(
wyrażenie )
Przetestuj wartość „mainline” w instrukcji SQL CASE
W zapisanej formule wyszukiwania możliwe wartości mainline
są przydatne w kontekście HTML. Gdy mainline
ma wartość true, wartością {mainline}
jest ciąg 1-znakowy *
(gwiazdka). Gdy mainline
ma wartość false, wartością {mainline}
jest ciąg 6 znaków
(spacja niełamliwa, HTML zakodowany jako odwołanie do znaku). Te wartości ciągu można porównać z literałami ciągu w kontekście SQL.
CASE
WHEN {mainline} = '*' THEN
wyrażenie-kiedy-prawda
WHEN {mainline} = ' ' THEN
wyrażenie-kiedy-fałsz
END
Skomplikowany przykład w świecie rzeczywistym
Poniższy przykład łączy kilka technik tutaj omówionych. Umieszcza hiperłącze w niestandardowo sformatowanej kolumnie, która po kliknięciu otwiera rekord zamówienia sprzedaży powiązany z wierszem. Hiperłącze służy do otwierania rekordu w nowym oknie lub karcie po kliknięciu oraz do wyświetlania podpowiedzi po najechaniu kursorem. Pole internalid
używane w adresie URL jest chronione przed kodowaniem adresu URL. Nazwa klienta, jeśli jest dostępna, jest wyświetlana w tej samej kolumnie, chroniona przed kodowaniem 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>'
Policz rekordy z lub bez wartości podanej w polu (policz brakujące i brakujące wartości)
Za pomocą funkcji NVL2()
Oracle SQL można utworzyć kolumnę wyświetlającą, która zawiera jedną wartość, jeśli pole zawiera dane, i inną wartość, jeśli pole nie zawiera danych. Na przykład w wyszukiwaniu jednostek zmień obecność głównego adresu e-mail w kolumnę z tekstem:
NVL2( {email} , 'YES' , 'NO' )
Pozwala to zliczać rekordy sumowane częściowo przez obecność lub brak adresu e-mail:
Field: Internal ID
Summary Type: Count
Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )