У меня есть мозги для всех вас, гуру отчетности по SQL Server 2008: -)
У меня есть отчет, который отображает кучу данных, в том числе UserID и OrgUnitID для пользователей. Это отчет сервера, который я отображаю на сервере из приложения ASP.NET.
Мое требование:
«обычный» пользователь может видеть только свои собственные строки данных (в основном
SELECT (fields) FROM dbo.DataView WHERE UserID = @UserID
)
привилегированный пользователь может видеть всех своих подчиненных; У меня есть табличная функция, которая обеспечивает эту функциональность (в основном SELECT (fields) FROM dbo.DataView<br>
INNER JOIN dbo.OrgHierarchy ON DataView.OrgUnitID = OrgHierarchy.OrgUnitID
)
Оба сценария сами по себе работают нормально - проблема в том, что я должен объединить их в один отчет.
Как я могу это сделать ?? Как получить отчет, который динамически, на основе параметра отчета, который я передаю (@UserLevel
; 0 = обычный пользователь, 1 = привилегированный), использует один или другой запрос ??
Мне не очень хочется динамически переписывать SQL-запрос .... какие-нибудь другие идеи ??
Я думал о том, чтобы иметь два отдельных набора данных, а затем просто активировать «правильный» набор на основе параметра UserLevel, но я не могу понять, как определить набор данных в подотчете или текстовое поле ......
Тогда я надеялся, что смогу добавить фильтр к своему набору данных в моем отчете о сервере динамически из моего клиентского приложения - но это тоже не представляется возможным, ..... может я создать фильтр для параметра «UserID = @UserID» и каким-то образом включить / отключить его при необходимости во встроенном VB-коде в самом отчете?
Кто-нибудь принимает? Дикие нестандартные мысли? Дайте мне знать!