0

Я создал lookupset ниже:SSRS - Lookup установлен игнорировать "" значения

= RTRIM (LTRIM (Join (LookupSet (Поля Fund_Family.Value & Поля Portfolio_Company_Name.Value, Поля Fund_Family.Value!! & Fields! Portfolio_Company_Name.Value, Fields! Security_Type.Value, «DataSet1»), «/») .Remove (1,1)))

Это похоже на работу. Однако в некоторых случаях у меня есть две строки, одна из которых имеет значение другое без значения ("") или столбца безопасности. Однако, делая это, результаты выглядят как/Security1. Однако это должно быть Security1.There также сценарии, где он берет Security 1// Security 2. Он должен игнорировать значения «».

Как добавить это выражение. Я знаю, что есть выражение для ISNothing, но может ли это быть добавлено здесь?

ответ

1

Решить его в SQL

Если бы это был мой проект, я предпочел бы решить эту проблему в запросе SQL, который производит данные. Поскольку я не вижу ваш SQL-запрос, и в некоторых случаях возможно, что вы не можете изменить запрос, я предоставил свое хакерское пост-SQL-решение.

Hacky Решение

Для простоты я буду использовать DATA_SET_STRING представлять код: RTRIM(LTRIM(Join(LookupSet(Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Type.Value, "DataSet1")

Что-то, как это будет удалить пустые имена строк из списка: =REPLACE(DATA_SET_STRING,"/"), "/ /", "/").Remove(1,1)))

Пустая строка & Пустые места

Если вы хотите удалить имена пустых пространств (""), а также пустую строку (""), я бы сначала преобразовал имена пустого пространства, чтобы они отображались как пустая строка, а затем удаляли пустые строки. Вложение REPLACE заявления могут сделать это:

=REPLACE(REPLACE(DATA_SET_STRING,"/"), " ", " "), "/ /", "/").Remove(1,1))) 

Несколько заглушек в ряд

Самое большое ограничение на это (кроме как невероятно трудно читать и поддерживать) в том, что он будет удалять только конечное число пустых имен в строке. Например, если у вас есть три пустых имени в строке, ваша исходная функция DATA_SET_STRING вернет «имя 1//// name 2». Мои дополнительные функции REPLACE приведут к окончательной строке «name 1// name 2». Чтобы обрабатывать несколько пробелов подряд, вам нужно будет вложить больше REPLACE.

Что-то вроде этого:

=REPLACE(REPLACE(REPLACE(DATA_SET_STRING,"/"), " ", " "), "/ /", "/"), "/ /", "/").Remove(1,1))) 

Хотя вы можете решить конкретные сценарии с этим REPLACE подход, он всегда будет уязвима для более пробелов подряд, чем вы ожидали.

Предупреждения

Опять же, я предпочел бы решить эту проблему, предоставляя запрос, который отфильтровывает пустые и пустые имена строк.Тем не менее, если вы собираетесь использовать Hacky подход (я знаю Hacky код может получить вас из варенья), вот слабые предоставленному решения:

  • Трудно читать
  • Трудно поддерживать
  • уязвимые к изменениям данных (слишком много пустых строк подряда)

Помните код ответственно.

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