2016-08-05 3 views
0

У меня возникла проблема с рабочим процессом NetSuite, который использует формулу SQL, чтобы объединить два настраиваемых поля. Проблема в том, что на некоторых элементах одно из этих полей отсутствует. Используемая формула:Проблема формулы поля NetSuite с Concat (SQL)

{custitem3} || ' '|| {custitemshoew width}

Когда «custitem3» нет на форме, мне присваивается ошибка «ERROR: Field» custitem3 «Not Found» Я попытался использовать условный оператор IF и КОГДА. Я не знаком с SQL, поэтому это может быть мой синтаксис. Но если кто-то мог бы посоветовать, это было бы весьма признательно.

EDIT:

Благодарим вас за ввод. Я нашел проблему. Ссылка на поле, которое не существует независимо от того, будет ли оно фактически вызвано, создаст ОШИБКУ. Поэтому моя работа заключалась в создании нового поля, которое ссылается на поле матрицы, которое может быть или не быть.

Ссылка на это поле, которое всегда будет присутствовать в записи позиции, не приведет к тому, что отчет ERROR заполнит поле, пытающееся его конкатенировать, и если ссылочное поле содержит отчет об ошибке, его можно игнорировать. Я пробовал этот код, измененный с того, что предложил YNK

CASE 
WHEN {custitem_hm_ref1} ISNUMERIC 
{custitemshoewidth}||" "||{custitem_hm_ref1} 
ELSE {custitemshoewidth} 
END 

Но это возвращает недопустимое выражение. Я неправильно настроил код?

+0

После проверки и тестирования нескольких вещей. Похоже, что большая проблема здесь - это поле «custiitem3», не существующее в этой форме. Есть ли у кого-нибудь предложение обойти это? – HamBeast

ответ

0

Вы можете использовать CASE-функцию вместо IF условия здесь ..

Как это:

CASE 
WHEN {custitem3} IS NULL THEN 
    {custitemshoewidth} 
ELSE 
    {custitem3}||' '||{custitemshoewidth} 
END 

Надеется, что это поможет вам.

Спасибо.

+1

Спасибо @YNK Я попытался запустить рабочий процесс с помощью инструкции CASE WHEN. Он отбросил ту же ошибку. ERROR: Поле «custitem3» не найдено. Я полагаю, что это связано с вызовом поля, которое не существует в этой форме (custitem3 - это поле матрицы, эта ошибка не найдена ни в каких элементах матрицы.) Моя мысль об обходном пути - создание поля, которое извлекается из матрица. Если в этом поле есть ошибка, тогда код, который вы указали, может работать, не вытягивая ошибку, только текст ошибки отсутствует. CASE WHEN {custitemX} ISNUMERIC {custitem3} || ' '|| {custitemshoewidth} ELSE {custitemshoewidth} END – HamBeast

0

Это хороший вариант использования для одной из функций NVL. Существуют функции NVL и NVL2, доступные для обработки нулевых значений. Для того, чтобы сделать то, что вы делаете, я мог бы использовать формулу, как:

NVL2({custitem3}, {custitem3}||' '||{custitemshoewidth}, {custitemshoewidth})

Для получения более подробной информации о всех доступных функциях SQL см NS справки документ под названием «SQL выражений».

Смежные вопросы