SSRS: «Содержит ошибку: [BC302205] Ожидается конец оператора». - PullRequest
0 голосов
/ 19 октября 2018

Я создал вложенное выражение замены, которое изменит строку в поле на основе текущего значения.У меня почти все работает, но я не уверен, что мне нужно добавить, чтобы закончить утверждение.Кто-нибудь может помочь?

 =Replace(
Replace(
REPLACE (Fields!DeviceType.Value, "1", "Desktop / Laptop / Server"),
"2", "Server"),
"3", "Printer"),
"4", "Firewall"),
"5", "Managed Switch"),
"6", "Switch"),
"7", "Access Point Controller"),
"8", "Access Point"),
"9", "Desk Phone"),
"10", "Modem"),
"11", "Mobile Phone"),
"12", "DVR"),
"13", "Camera"),
"14", "NAS / SAN"),
"15", "PBX"),
"16", "UPS"),
"17", "Router"),
"18", "Monitor"),
"19", "Docking Station")

1 Ответ

0 голосов
/ 19 октября 2018

Функция REPLACE заменяет один фрагмент текста другим в строке, поэтому =REPLACE("Mobile Phone", "Mobile", "Cell") возвращает "Сотовый телефон".В вашем случае функция REPLACE - это не то, что вам нужно.

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

Поэтому вам нужна функция SWITCH.

=SWITCH (
    Fields!DeviceType.Value = "1", "Desktop / Laptop / Server",
    Fields!DeviceType.Value = "2", "Server",
    Fields!DeviceType.Value = "3", "Printer",
    Fields!DeviceType.Value = "4", "Firewall",
    Fields!DeviceType.Value = "5", "Managed Switch",
    Fields!DeviceType.Value = "6", "Switch",
    Fields!DeviceType.Value = "7", "Access Point Controller",
    Fields!DeviceType.Value = "8", "Access Point",
    Fields!DeviceType.Value = "9", "Desk Phone",
    Fields!DeviceType.Value = "10", "Modem",
    Fields!DeviceType.Value = "11", "Mobile Phone",
    Fields!DeviceType.Value = "12", "DVR",
    Fields!DeviceType.Value = "13", "Camera",
    Fields!DeviceType.Value = "14", "NAS / SAN",
    Fields!DeviceType.Value = "15", "PBX",
    Fields!DeviceType.Value = "16", "UPS",
    Fields!DeviceType.Value = "17", "Router",
    Fields!DeviceType.Value = "18", "Monitor",
    True, "Unknown Device Type")

Конечное выражение действует как ELSE в случае, если в вашем выражении есть данные, которые вы не охватили.

Если это не работает, проверьте, нет ли пробелов в начале / в конце.Если есть, то вам нужно будет использовать TRIM (TRIM(Fields!DeviceType.Value) = ...)

Также убедитесь, что поле текстовое, если оно действительно числовое, удалите кавычки вокруг чисел.

...