2014-10-03 3 views
0

У меня есть табличный отчет, который тянет в поле, которое показывает свободный текст. Добавляю:SSRS 2008R2 Выражение для ограничения текста

= Left (fields! Data.value, 250) Я могу ограничить количество символов до 250. Однако мне бы очень хотелось закончить текст после последней полной остановки (периода), ближайшей к 250 символов.

Например, в настоящий момент отчет может отображаться: «Продажи достигли 25 000 за сентябрь. Мы планируем »и внезапно заканчиваем« планирование », поскольку« планирование »составляет 250 символов.

В идеале я хотел бы, чтобы текст заканчивался в конце предложения раньше, например, чтобы остановиться после «Сентября».

Знаете ли вы, если это возможно - любые предложения или указатели были бы чрезвычайно оценены.

С большим спасибо.

ответ

1

Вы можете использовать InStrRev, чтобы получить последний период в строке, и использовать это как параметр для выражения Left.

Есть также еще несколько проверок, чтобы рассмотреть, например:

  • Когда нет периодов в строке
  • Когда нет периодов в первые 250 символов
  • Когда есть периоды после обрезания 250 символов, а также периоды в первых 250 символах.

Это должно работать и поймать большинство из исключений я могу думать:

=IIf(InStrRev(Left(Fields!data.Value, 250), ".") > 0 
     And InStrRev(Left(Fields!data.Value, 250), ".") <= 250 
    , Left(Fields!data.Value, InStrRev(Left(Fields!data.Value, 250), ".")) 
    , Left(Fields!data.Value, 250)) 
+0

Спасибо. Это сработало отлично. –

+0

Ваш прием! Если ответ решит вашу проблему, рассмотрите вопрос о его утверждении. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

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