AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.11.2009, 16:05   #1  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Все обжигаются на этом. Для разных типов записей можно использовать упрощенную схему. Если же используются сложные запросы с Join или несколькими запросами из одной таблицы, то нужно использовать "явную" фильтрацию. Об этом написано в SDK но как-то больно стыдливо.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.11.2009, 16:14   #2  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Все обжигаются на этом. Для разных типов записей можно использовать упрощенную схему. Если же используются сложные запросы с Join или несколькими запросами из одной таблицы, то нужно использовать "явную" фильтрацию. Об этом написано в SDK но как-то больно стыдливо.
Я впринципе обошел явную фильтрацию вот чем: Создал параметр который берет данные из 1 dataset, и потом подставлял этот параметр в другие dataset и все работало.
Старый 21.08.2012, 15:43   #3  
Cukasa is offline
Cukasa
Участник
 
2 / 10 (1) +
Регистрация: 21.08.2012
Здравствуйте.
Заранее извиняюсь за некропостинг, но ответа на форуме не нашёл (может плохо искал), а данный тред очень похож на мою проблему.
Задача.
Решил сделать красивый отчёт с "пирогом" по действиям в рамках CampaignActivity (действия кампании). То есть кастомизировал немного сущность Appointment (Встреча) добавив поля new_win (Положительный результат) и new_fail (Отрицательный результат) и на выходе получаю что-то вроде пирожка во вложении. Поля для него, в обычном варианте, вытаскиваются таким запросом:
Код:
SELECT 
	COUNT(*) AS kolvo, 'Положительные' AS 'type', FA.regardingobjectidname AS subject
FROM 
	FilteredAppointment AS FA
INNER JOIN 
	FilteredCampaignActivity AS FCA
ON 
	FA.regardingobjectid = FCA.activityid
WHERE 
	(FA.new_win IS NOT NULL) AND (FCA.activityid = @id)
GROUP BY 
	FA.regardingobjectidname
UNION ALL
SELECT 
	COUNT(*) AS kolvo, 'Отрицательные' AS 'type', FA.regardingobjectidname AS subject
FROM 
	FilteredAppointment AS FA
INNER JOIN 
	FilteredCampaignActivity AS FCA
ON 
	FA.regardingobjectid = FCA.activityid
WHERE 
	(FA.new_fail IS NOT NULL) AND (FCA.activityid = @id)
GROUP BY 
	FA.regardingobjectidname
UNION ALL
SELECT 
	COUNT(*) AS kolvo, 'Не начатые' AS 'type', FA.regardingobjectidname AS subject
FROM 
	FilteredAppointment AS FA
INNER JOIN 
	FilteredCampaignActivity AS FCA
ON 
	FA.regardingobjectid = FCA.activityid
WHERE 
	(FA.new_fail IS NULL) AND (FA.new_win IS NULL) AND (FCA.activityid = @id)
GROUP BY 
	FA.regardingobjectidname
В BIS всё работает хорошо и без вопросов. Теперь я хочу сделать немного удобства и запускать данный отчёт непосредственно с формы "Действия кампании" и динамически подставлять туда выделенную(ые) запись(и). Естественно автоматическая фильтрация по CRMAF_ тут работать не будет. Поэтому я полез по форумам и SDK за примерами жёсткой предварительной фильтрации. Но при попытки переписать данный, статичный, запрос под динамичный, наткнулся на грабли (ибо молод и неопытен) как же подружить столько WHERE в одном запросе. Так как, если я правильно понял примеры и общий смысл, то в параметр как раз и подставляется он самый.
Собственно динамический запрос (простите если разнесу разметку форума):
Код:
DECLARE @CRM_CampaignActivity VarChar(Max)
DECLARE @SQL VarChar(Max)
SET @CRM_CampaignActivity = 'SELECT FilteredCampaignActivity.activityid FROM FilteredCampaignActivity'
SET @SQL = 
	'SELECT COUNT(*) AS kolvo, FA.regardingobjectidname AS subject FROM  FilteredAppointment AS FA INNER JOIN ('+@CRM_CampaignActivity+') AS FCA ON  FA.regardingobjectid = FCA.activityid WHERE (FA.new_win IS NOT NULL) AND (FCA.activityid in  ('+@CRM_CampaignActivity+')) GROUP BY FA.regardingobjectidname
	UNION ALL 
	SELECT COUNT(*)  AS kolvo, FA.regardingobjectidname AS subject FROM FilteredAppointment AS FA INNER JOIN  ('+@CRM_CampaignActivity+') AS FCA ON FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail  IS NOT NULL) AND (FCA.activityid in ('+@CRM_CampaignActivity+')) GROUP BY  FA.regardingobjectidname 
	UNION ALL 
	SELECT COUNT(*) AS kolvo, FA.regardingobjectidname AS  subject FROM FilteredAppointment AS FA INNER JOIN ('+@CRM_CampaignActivity+') AS FCA ON  FA.regardingobjectid = FCA.activityid WHERE (FA.new_fail IS NULL) AND (FA.new_win IS NULL) AND  (FCA.activityid in ('+@CRM_CampaignActivity+')) GROUP BY FA.regardingobjectidname'
EXEC (@SQL)
Проблем у этого запроса две.
Первая: Фильтрации данных не происходит. Всегда возвращаются все записи по всем Действиям кампаний.
Вторая: Ругается на конструкцию вида 'Положительные' AS 'type'. Говорит некорректный синтаксис. Как экранировать эту конструкцию? Или хотя бы скажите как называется она (выборка несуществующего поля?) чтобы я мог погуглить. Заранее благодарю за ответы.
Изображения
 
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подстановка в поле из нескольких сущностей Tarasov E Dynamics CRM: Разработка 9 09.09.2009 10:45
Выбор нескольких значений vienna Dynamics CRM: Разработка 12 03.06.2009 19:38
Предварительная фильтрация по теме Черничкин Станислав Dynamics CRM: Разработка 3 21.12.2007 08:10
Предварительная фильтрация в отчётах (CRMAF) SeregaK Dynamics CRM: Разработка 10 06.11.2007 13:33
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:42.