Добрый день.
WHERE EXISTS (
SELECT * FROM dbo.tbl_task dtt
WHERE dtt.statusid > '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}'
AND dtt.opportunityid = dto.id)
есть такой запрос на sqlserver
Мне нужно сделать фильтр, который будет выполнять проверку данных условий.
comparefilte: tbl.task_statusid > парамерт(статус задачи открыра)
comparefilte2: dtt.opportunityid = dto.id
бул фильтр: указана группа задачи и булейский параметр = 1
Но не срабатывает фильтр, запрос отдельно работает на ура
Нравится
Здравствуйте Олег,
Вы имеете в виду что запрос который вы написали
SELECT * FROM dbo.tbl_opportunity dto WHERE EXISTS ( SELECT * FROM dbo.tbl_task dtt WHERE dtt.statusid <> '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}' AND dtt.opportunityid = dto.id)
работает ?
Посмотрите пожалуйста Предпросмотр и код который генерирует Terrasoft администратор.
Я создал такой SelectQuery :
получил такой код
SELECT [tbl_Opportunity].[ID] AS [ID] FROM [dbo].[tbl_Opportunity] AS [tbl_Opportunity] WHERE(EXISTS (SELECT [tbl_Task].[OpportunityID] AS [OpportunityID] FROM [dbo].[tbl_Task] AS [tbl_Task] WHERE([tbl_Task].[StatusID] <> :statusid AND [tbl_Opportunity].[ID] = [tbl_Task].[OpportunityID])))
результаты выполнения аналогичны результатам вашего sql запроса, который написан в ручную.
Если данный пост не помог, прикрепите пожалуйста xml вашего сервиса sq
Выполняю таким же образом, но фильтр на срабатывает.
Прилагаю xml
Олег, пожалуйста перезалейте файл.
При открытии получаю следующую ошибку:
! C:\Documents and Settings\a.yavorskiy\Desktop\sq_opportunity.rar: CRC failed in sq_Opportunity.xml. The file is corrupt
! C:\Documents and Settings\a.yavorskiy\Desktop\sq_opportunity.rar: Unexpected end of archive
На сколько я понял в данном sq вы не используете свои таблицы, следовательно мы сможем увидеть описанную вами проблему. Попробуйте включить фильтры (установив галочки), и проверить их работу в принципе в вашем запросе.
Прикладываю файл повторно.
Почему то отрабатывает не верно. Проекты с открытыми задачами я вижу, хотя в условии указал, что показывать данные проекты не нужно.
Олег после того как подгрузил сервисы на 3.0.4.112
Заметил в фильтре сравнения
Насколько я понимаю следует использовать "<>" после чего установил фильтры
Получил код :
... WHERE ([tbl_Opportunity].[StatusID] = :OpportunityStatus_AtWork AND EXISTS (SELECT [tbl_Opportunity].[ID] AS [ID] FROM [tbl_Opportunity] AS [tbl_Opportunity] WHERE (EXISTS (SELECT [tbl_Task].[OpportunityID] AS [OpportunityID] FROM [tbl_Task] AS [tbl_Task] WHERE (([tbl_Task].[StatusID] <> :StatusIDOpen AND [tbl_Opportunity].[ID] = [tbl_Task].[OpportunityID])))))) ...
На сколько я понимаю этот код аналочен желаемому
Проверьте пожалуйста.
Да, я заметил данную ошибку, но после исправления, мне все равно показывает все проекты с задачами в состоянии "открыта". Если смотреть запрос на просмотр, то выглядит все верно, но в работе отрабатывает совершенно не так как должен.
Приведите пожалуйста код который генерирует Terrasoft Администратор в режиме предпросмотра.
Яворский Алексей
Эксперт 3-й линии поддержки
Спасибо за помощь, проблему решил. Был неправильно составлен запрос.
Нужно было:
SELECT * FROM dbo.tbl_opportunity dto WHERE NOT EXISTS ( SELECT * FROM dbo.tbl_task dtt WHERE dtt.statusid = '{FB10FCB1-DE0E-446D-81E8-A0C456E2C3AB}' AND dtt.opportunityid = dto.id