SSRS: отчет по запросу только для пользователя, вошедшего в систему - PullRequest
1 голос
/ 20 сентября 2019

Мне нужно было иметь возможность получить отчет, основанный на том, кто вошел в систему. Например, из группы продавцов, если Боб входит в этот отчет и нажимает на раскрывающийся список Продавца, мне нужно, чтобы он толькобыть в состоянии видеть Боба как доступного продавца, а не кого-либо еще.Я решил эту проблему с помощью функции =User!UserID в SSRS, и она прекрасно работает.

В настоящее время у меня возникают проблемы с предоставлением этой функции инструкции CASE, позволяющей менеджерам просматривать представление "Администратор"зайди и посмотри на Боба и всех остальных.Мой текущий запрос выглядит следующим образом и работает только для выбора имени этого пользователя в раскрывающемся списке «Продавец»:

select SalesPerson_Name
from Salesperson
where salesperson_id =  SUBSTRING(@user,14,20) 

enter image description here

Вот чтоЯ пытаюсь использовать, чтобы переопределить и дать представление «Все» для уровня администратора:

select Salesperson_name
from Salesperson
where case
    when @user in ('DOMAIN\Brandyj','DOMAIN\jwilson') then 1=1
    else SalesPerson_id = SUBSTRING(@user,14,20)
    end 

Это не нравится тому, что я пытаюсь сделать, и дает мне

Неверный синтаксис рядом с '='.

Возможно, я слишком долго смотрел на это.Может кто-то заметить что-то очевидное?

1 Ответ

1 голос
/ 20 сентября 2019

Вы близки ... просто незначительное изменение.Вам нужно CASE выражение для оценки вашего операнда в столбце SalesPerson_id.CASE не обеспечивает логический поток, поскольку вы пытались его использовать.Помните, он оценивает набор логических выражений, чтобы определить результат (который должен быть одним типом данных).

Я также выбрал OR, но вы все равно можете использовать IN, если хотите.

select Salesperson_name
from Salesperson
where 
    SalesPerson_id  = 
        case
            when @user = 'DOMAIN\Brandyj' or @user = 'DOMAIN\jwilson' then SalesPerson_id  
            else SUBSTRING(@user,14,20)
         end 
...