Цитата:
Сообщение от
Kipetcoff
Создаю .rdl отчет в CRM. Есть 2 таблицы. Для каждой свой Dataset. Оба запроса к Dataset используют предварительную фильтрацию. Т.е.как в в запросе к первому DS используется конструкция FilteredNew_loan AS CRMAF_New_loan
Код:
SELECT CRMAF_New_loan.new_loanid, CRMAF_New_loan.new_account_number, CRMAF_New_loan.new_estdate, CRMAF_New_loan.new_legalentityname,
CRMAF_New_loan.owneridname, CRMAF_New_loan.new_clientname, FilteredNew_event.new_descriptionen, FilteredNew_event.new_name,
FilteredNew_event.new_eventsid, FilteredNew_event.new_event_owneridname, FilteredNew_event.new_dateutc, FilteredNew_event.new_project,
FilteredNew_event.new_durations, FilteredNew_specialistbreakdown.new_rate
FROM FilteredNew_loan AS CRMAF_New_loan INNER JOIN
FilteredNew_event ON CRMAF_New_loan.new_loanid = FilteredNew_event.new_eventsid LEFT OUTER JOIN
FilteredNew_specialistbreakdown ON FilteredNew_specialistbreakdown.new_specialisrateid = CRMAF_New_loan.new_loanid AND
FilteredNew_specialistbreakdown.new_useridid = FilteredNew_event.new_event_ownerid
так и второй запрос использует FilteredNew_loan AS CRMAF_New_loan
Код:
SELECT FilteredNew_specialistbreakdown.new_name, FilteredNew_specialistbreakdown.new_rate
FROM FilteredNew_loan AS CRMAF_New_loan INNER JOIN
FilteredNew_specialistbreakdown ON FilteredNew_specialistbreakdown.new_specialisrateid = CRMAF_New_loan.new_loanid
Проблема в том,что в первом случае предварительная фильтрация работает, а во втром выбирает все подряд.
Есть такая тема,что дважды нельзя использовать CRMAF_New_loan в одном запросе. Но это в одном запросе,а не Dataset, кроме того я пробовал удалять первую таблицу и предварительная фильтрация во второй не работает. Кто-нить может что-нить подсказать?
В таком случае лучше перестроить модель Вашего отчёта на использование параметров префильтрации.
Методика такая:
1. Создаётся параметр отчёта с названием CRM_<название сущности>.
2. Выборки запроса необходимо переписать под динамический SQL, т.е. прежнюю конструкцию
Код:
Select * From FilteredAccount CRMAF_Account
Необходимо преобразовать в такую:
declare @Query VarChar(Max)
Set @Query = 'Select * From (' + @CRM_Account + ') t'
Exec(@Query)
3. В датасете отчёта замапить созданный параметр отчёта CRM_Account на параметр запроса @CRM_Account.