Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать одну View с разными условиями для разных пользователей?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Хочу сделать View, в которой выполнялись бы разные фильтры для разных пользователей. Фильтры должны задаваться пользователями (из стандартного набора). Сложность в том, что, как правило, пользователи запускают на одном и том же компьютере несколько копий приложений с разными фильтрами, причем именно для того, чтобы использовать разные фильтры. Пытался заносить параметры фильтров в отдельную таблицу и выбирать их оттуда по SPID (по имени пользователя и имени компьютера не подходит по указанной ранее причине), но оказалось, что Access открывает разные сессии для разных запросов.
ХП меня не устраивает, потому что мне не нравится как с ними работает Access (большие задержки перед началом вывода данных).
Подскажите, как можно передать параметры фильтра во View?
Заранее премного благодарен.
11 дек 17, 15:39    [21024414]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Access .... Access

Ты ничего не путаешь?
11 дек 17, 15:46    [21024449]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
K-Nick
Хочу сделать View, в которой выполнялись бы разные фильтры для разных пользователей.
У View нет параметров, для клиента она как таблица.
K-Nick
оказалось, что Access открывает разные сессии для разных запросов.
Он по разному умеет.
И вопросы по клиенту, то есть Access, продуктивнее задавать в разделе по Access.
11 дек 17, 16:07    [21024536]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Cammomile
Access .... Access

Ты ничего не путаешь?


Нет, в этот раз не путаю. :) База лежит на SQL-сервере 2012. К ней, в качестве клиента, обращается Access. Но это не суть важно. Это я упомянул только для того, чтобы объяснить почему мне не подходит ХП и почему я не могу занести параметры фильтра в таблицу и выполнить View в одной сессии.
11 дек 17, 16:10    [21024551]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну, ты можешь (технически) исполнить некое "мультимножество", которое содержит в себе все данные во всех нужных тебе аналитических разрезах, и селектить из него, фильтруя, соответственно, по некоему уникальному ключу фильтра.

Но это, конечно же, порнография, и делать так не надо.
11 дек 17, 16:17    [21024580]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
alexeyvg
У View нет параметров, для клиента она как таблица.

Да, конечно, это я некорректно изъяснился. Параметров нет, но, например, меняя значения полей в связанной таблице я могу "включать" или "выключать" нужные "ветки" в условиях WHERE. Или указывать нужное значение, например дату. Почти полная аналогия с параметрами. Непонятно только по какому условию связать таблицы, чтобы для каждого экземпляра клиентской части была своя связь.
11 дек 17, 16:17    [21024581]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
K-Nick
Member

Откуда:
Сообщений: 135
Cammomile
Ну, ты можешь (технически) исполнить некое "мультимножество", которое содержит в себе все данные во всех нужных тебе аналитических разрезах, и селектить из него, фильтруя, соответственно, по некоему уникальному ключу фильтра.

Но это, конечно же, порнография, и делать так не надо.


Да, вот эта порнография мне и нужна. Множество "аналитических разрезов" не очень большое. Но как во View выбрать нужный в данный момент "уникальный ключ фильтра"?
11 дек 17, 16:23    [21024602]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
  CREATE VIEW    dbo.MultiFilteredObjectView AS 

  SELECT APID.AllPositiveIDs ,
  UTO.UserTablesOnly,
  NLSP.NameLikeSP,

  AO.Name, AO.object_id, AO.Type, AO.type_desc FROM sys.all_objects AO 
  OUTER APPLY (
  SELECT  
    AllPositiveIDs = 1 
  FROM sys.all_objects O WHERE  O.Object_Id = AO.Object_Id 
  AND O.Object_id > 0 

  ) APID
  OUTER APPLY (
  SELECT  
    UserTablesOnly  = 1 
  FROM sys.all_objects O WHERE  O.Object_Id = AO.Object_Id 
  AND O.Type = 'U' 

  ) UTO 
  OUTER APPLY ( 
  SELECT  
    NameLikeSP  = 1 
  FROM sys.all_objects O WHERE  O.Object_Id = AO.Object_Id 
  AND O.Name LIKE 'SP%'

  ) NLSP 

GO

SELECT * FROM dbo.MultiFilteredObjectView  V WHERE NameLikeSP = 1 

SELECT * FROM dbo.MultiFilteredObjectView  V WHERE UserTablesOnly = 1   
11 дек 17, 16:25    [21024609]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
  CREATE VIEW    dbo.MultiFilteredObjectView2 AS 

  SELECT 
    AO.Name
  , AO.object_id
  , AO.Type
  , AO.type_desc 
  , FilterName = 'NameLikeSP'
  FROM sys.all_objects AO 
  WHERE AO.Name LIKE 'SP%'
  
 UNION ALL 
  SELECT 
    AO.Name
  , AO.object_id
  , AO.Type
  , AO.type_desc 
  , FilterName = 'PositiveId'
  FROM sys.all_objects AO 
  WHERE AO.object_id > 0 

 UNION ALL 
  SELECT 
    AO.Name
  , AO.object_id
  , AO.Type
  , AO.type_desc 
  , FilterName = 'AllRecords'
  FROM sys.all_objects AO 
 


GO

SELECT * FROM dbo.MultiFilteredObjectView2  WHERE FilterName = 'PositiveId'

SELECT * FROM dbo.MultiFilteredObjectView2   WHERE FilterName = 'AllRecords'
11 дек 17, 16:40    [21024679]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Добрый Э - Эх
Guest
K-Nick,

Параметризованние представление средствами MS SQL SERVER
11 дек 17, 17:28    [21024838]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
Сейчас плохом научу.

select ... from ... where original_login() = 'domen\aaa'
union all
select ... from ... where original_login() = 'domen\bbb'
...
11 дек 17, 18:11    [21024970]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Владислав Колосов
Сейчас плохом научу.

select ... from ... where original_login() = 'domen\aaa'
union all
select ... from ... where original_login() = 'domen\bbb'
...

Чукча не читатель, чукча писатель...
11 дек 17, 18:13    [21024976]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
Cammomile,

?
автор
для каждого экземпляра клиентской части была своя связь
11 дек 17, 18:26    [21025018]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать одну View с разными условиями для разных пользователей?  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
У какждого окна Access есть свой параметр HWND.
form.HWND

Можно его использовать для однозначной идентификации набора параметров в фильтрующей таблице.
12 дек 17, 16:20    [21027787]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить