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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.08.2012, 15:43   #6  
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:49.