Member 14053897 Ответов: 1

Отделка в SSRS выражение


У меня есть текст как "АМ.- Джубайль.ПРЕДВАРИТЕЛЬНО ФИНИШНУЮ ПРЯМУЮ.PFBSTR.PFBST1"где мне нужно обрезать и отобразить только последнее слово в этом тексте как PFBST1.

Мне нужно знать, какое выражение или условие нужно использовать, чтобы исключить остальные слова.

Что я уже пробовал:

=Обрезать(Поля!Последнее оборудование.Значение:"разве")

1 Ответов

Рейтинг:
0

CHill60

Обрезка удаляет пробелы. Вам нужна подстрока текста.

Попробовать это

declare @text varchar(50) = 'AM.JUBAIL.PRE-FINISHING-LINE.PFBSTR.PFBST1'
select reverse(left(reverse(@text), charindex('.',reverse(@text)) - 1))

Вот справочный материал
Слева (Transact-SQL) | Microsoft Docs[^]
Реверс (Transact-SQL) | Microsoft Docs[^]
CHARINDEX (Transact-SQL) | Microsoft Docs[^]

Если вы посмотрите на результаты этих запросов, вам будет легче понять, что происходит ...
select reverse(@text)
select charindex('.',reverse(@text))
select left(reverse(@text), charindex('.',reverse(@text)) - 1)
Результаты...
1TSBFP.RTSBFP.ENIL-GNIHSINIF-ERP.LIABUJ.MA
7
1TSBFP


[EDIT] извинения - это было довольно четко помечено SSRS, и я предоставил SQL-решение. Попробуйте вместо этого сделать следующее (предостережение - непроверенное)
= Mid(Fields!LastEquipment.Value, InstrRev(Fields!LastEquipment.Value, ".") + 1, Length(Fields!LastEquipment.Value))


Member 14053897

Эти запросы не работают, потому что мне нужно использовать их в Построителе отчетов, а не в SQl-запросе. есть ли какой-нибудь способ использовать выражение в построителе отчетов?

CHill60

Я обновил свое решение. Сожалеть об этом.

Member 14053897

Я получаю ошибку для этого условия как "bc30451: не объявлено. он может быть недоступен из-за своего уровня защиты."

CHill60

Это может означать, что поля!Последнее оборудование вышло из сферы применения. Работает ли это, если вы просто используете

=Fields!LastEquipment.Value