17.12.2015, 20:27 | #1 |
Участник
|
Ошибка при формировании отчета
Доброго времени суток.
Нарисовал отчет в report builder. Отчет должен работать по контракту, сделал в нем параметр @CRM_ContractId, если пробовать запустить отчет в report builder, то он просит указать guid отчета, указываешь - все прекрасно работает. Пошел в crm (2011), создал там отчет из существующего rdl, привязал к сущности контрактов, но вот незадача при попытке открыть отчет с формы контракта получаю ошибку: "Для данного отчета не был предоставлен ожидаемый параметр". При этом в адресной строке браузера я guid этой записи вижу, то есть параметр передается. В отчете есть и другие параметры, но все они без исключения имеют значения по умолчанию и берут эти значения из запросов. Что делаю не так? |
|
18.12.2015, 13:59 | #2 |
Участник
|
Никаких мыслей? Может хоть направление подскажут знающие люди? )
|
|
18.12.2015, 14:29 | #3 |
Чайный пьяница
|
Добрый день,
Подсказываю - неправильно пользуетесь параметрами. Посмотрите эту ссылку - https://technet.microsoft.com/en-us/...or=-2147217396 Чтобы помочь вам сильнее выложите сюда код вашего запроса, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
18.12.2015, 15:19 | #4 |
Участник
|
Цитата:
Сообщение от a33ik
Добрый день,
Подсказываю - неправильно пользуетесь параметрами. Посмотрите эту ссылку - https://technet.microsoft.com/en-us/...or=-2147217396 <ReportParameter Name="CRM_FilteredContract"> <DataType>String</DataType> <Prompt>GUID</Prompt> </ReportParameter> <DataSet Name="Contract"> <Query> <DataSourceName>CRM</DataSourceName> <QueryParameters> <QueryParameter Name="@CRM_FilteredContract"> <Value>=Parameters!CRM_FilteredContract.Value</Value> </QueryParameter> </QueryParameters> <CommandText>SELECT FilteredContract.accountid ,FilteredContract.new_signer_ ,FilteredContract.contractid ,FilteredContract.title ,FilteredContract.new_date ,FilteredContract.activeon ,FilteredContract.expireson ,FilteredContract.new_contractcurrency ,FilteredContract.new_contractcurrencyname ,FilteredContract.new_netpriceincontractcurrency FROM FilteredContract where FilteredContract.contractid=@CRM_FilteredContract</CommandText> <rd:UseGenericDesigner>true</rd:UseGenericDesigner> </Query> |
|
18.12.2015, 15:24 | #5 |
Участник
|
Повторюсь, есть еще параметры, но все они пляшут от ContractId и имеет вид вроде этого:
<ReportParameter Name="CRM_Buyer"> <DataType>String</DataType> <DefaultValue> <DataSetReference> <DataSetName>Contract</DataSetName> <ValueField>accountid</ValueField> </DataSetReference> </DefaultValue> <Prompt>Buyer</Prompt> </ReportParameter> Возможно дело в них, но как понять какого параметра не хватает в момент создания отчета я не могу. |
|
18.12.2015, 15:32 | #6 |
Чайный пьяница
|
Пошаговая инструкция:
1. Правите в отчете запрос на: SELECT CRMAF_FilteredContract.accountid ,CRMAF_FilteredContract.new_signer_ ,CRMAF_FilteredContract.contractid ,CRMAF_FilteredContract.title ,CRMAF_FilteredContract.new_date ,CRMAF_FilteredContract.activeon ,CRMAF_FilteredContract.expireson ,CRMAF_FilteredContract.new_contractcurrency ,CRMAF_FilteredContract.new_contractcurrencyname ,CRMAF_FilteredContract.new_netpriceincontractcurrency FROM FilteredContract as CRMAF_FilteredContract 2. Удаляете параметр. 3. Удаляете отчёт из CRM (обновление существующего не поможет, так что удаляйте). 4. Создаёте отчёт заново.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
18.12.2015, 15:46 | #7 |
Участник
|
А что же делать с датасетами которые используют этот параметр?! Предположим мне по айдишнику контракта надо взять его строки, сейчас это делается с помощью параметра который вы советуете удалить
|
|
18.12.2015, 16:19 | #8 |
Чайный пьяница
|
С этого и надо было начинать. При наличии нескольких датасетов вам потребуется использовать Dynamic SQL, а именно:
1. Добавляйте текcтовый параметр CRM_FilteredContract в отчёт. 2. Приводите запросы к следующему виду: Код: Declare @SQL VarChar(Max) Set @SQL = 'SELECT FilteredContract.accountid ,FilteredContract.new_signer_ ,FilteredContract.contractid ,FilteredContract.title ,FilteredContract.new_date ,FilteredContract.activeon ,FilteredContract.expireson ,FilteredContract.new_contractcurrency ,FilteredContract.new_contractcurrencyname ,FilteredContract.new_netpriceincontractcurrency FROM (' + @CRM_FilteredContract + ') FilteredContract' Exec(@SQL)
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 18.12.2015 в 17:27. |
|
|
За это сообщение автора поблагодарили: Vladislav Berman (1). |
18.12.2015, 18:20 | #9 |
Участник
|
Спасибо за наводку, ваш пример запроса не работает, но я думаю что его победю )
|
|
18.12.2015, 18:35 | #10 |
Чайный пьяница
|
Ошибку покажите - трудно заниматься отладкой без наличия текста ошибки.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
21.12.2015, 11:11 | #11 |
Участник
|
|
|
21.12.2015, 11:31 | #12 |
Чайный пьяница
|
Цитата:
Не может ваш код работать, потому что в CRM_FilteredContract будет передаваться контекст в котором будет запускаться ваш отчёт. Напимер при запуске отчёта с конкретной записи в @CRM_FilteredContract будет передано значение вроде Код: Select * From FilteredContract where FilteredContract = 'Guid'
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Дмитрий А.А. (1). |
22.12.2015, 15:27 | #13 |
Участник
|
Короче говоря, методом проб и ошибок я смог его победить и теперь все работает Но то ли я не умею искать, то ли гугл поломался, но нормального мануала, в котором было бы описано что да как я так и не нашел
|
|