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