2016-11-15 2 views
0

У меня есть поле в моем докладе SSRS, который имеет несколько возврата каретки, например:Удалить пустые строки из строки SSRS

First, get materials 



Next, glue them all together 

Last, let dry for two hours 

Все шесть строк в в одном поле, его не 7 строк. Я знаю, что я могу заменить/удалить возврат каретки, но то, что я действительно ищу, - это просто удалить пустые строки. Я бы по-прежнему хотел сохранить возврат каретки на строках, которые имеют текст, например:

First, get materials 
Next, glue them all together 
Last, let dry for two hours 

Я очень благодарен за любую помощь по этому вопросу.

Спасибо!

+0

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

+0

Нет, нет общих символов, это поле, где люди могут просто вводить свободно, поэтому он может иметь или не иметь возвратов каретки вообще, не говоря уже об общих символах предшествующих/конечных значений. – jenhil34

+0

Что делать, если вы заменили все двойные сообщения каретки пустой строкой? – Kidiskidvogingogin

ответ

0

Я думаю, ваша проблема в том, что в каждой строке может присутствовать несколько символов возврата или новых строк, в то время как ваш ожидаемый результат делит каждую строку только на одну карету возврата или новый символ линии.

Я думаю, его можно избежать с помощью метода замены Regex (да, вы можете использовать Regex в SSRS).

Если вы уверены, что ваш источник генерирует новую строку с помощью возврата каретки вы можете использовать:

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value, 
"\r\r+",Environment.NewLine) 

В противном случае, если ваш источник генерирует следующую строку через символ новой строки (код 10 в ASCII), вы должны использование:

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value, 
"\n\n+",Environment.NewLine) 

Примечание. Большинство систем Windows используют \ r \ n для определения конца строки, заменяя соответствующую среду.

UPDATE:

=System.Text.RegularExpressions.Regex.Replace(Fields!MultilineText.Value, 
"\r\n[\r\n]+",Environment.NewLine) 

Позвольте мне знать, если это помогает.

+0

Спасибо за предложение, я попробовал в обоих направлениях, и ни один из них не изменил поле. Формула не вышла из строя или что-то еще, дисплей просто не изменился. – jenhil34

+0

@ jenhil34, я уверен, что выражение работает, проблема в том, что мы не знаем символов, используемых для создания новой строки в ваших данных. Я обновил выражение, попробую. Если он не работает, проверьте, вызваны ли пустые строки несколькими пробелами и не используются возврат каретки или новые символы строки. –

+0

Удивительно, это сработало как шарм! – jenhil34

0

У меня есть хороший ответ, который я только что понял. Мой адрес2 (вторая строка адреса) не всегда присутствует во всех строках. Таким образом, я смог использовать условие, чтобы поместить vbCrlf или поставить Nothing, если в Address2 не было значения.

Итак, каждая конкатенированная строка прекрасно складывается без пустых строк, если нет адреса2. Возможно, это можно сделать с помощью Environment.Newline вместо vbCurliff.

=Trim(Fields!IPA_Addr1.Value) & IIF(LEN(Trim(Fields!IPA_Addr2.Value)) > 0, vbCrLf, Nothing) & Trim(Fields!IPA_Addr2.Value) & IIF(LEN(Trim(Fields!IPA_Addr2.Value)) = 0, vbCrlf , Nothing) & Trim(Fields!IPA_City.Value) & ", " & Trim(Fields!IPA_State.Value) & " " & Trim(Fields!IPA_Zip.Value) 
Смежные вопросы