|
|
#1 |
|
Участник
|
Ошибка при формировании отчета
Доброго времени суток.
Нарисовал отчет в report builder. Отчет должен работать по контракту, сделал в нем параметр @CRM_ContractId, если пробовать запустить отчет в report builder, то он просит указать guid отчета, указываешь - все прекрасно работает. Пошел в crm (2011), создал там отчет из существующего rdl, привязал к сущности контрактов, но вот незадача при попытке открыть отчет с формы контракта получаю ошибку: "Для данного отчета не был предоставлен ожидаемый параметр". При этом в адресной строке браузера я guid этой записи вижу, то есть параметр передается. В отчете есть и другие параметры, но все они без исключения имеют значения по умолчанию и берут эти значения из запросов.Что делаю не так? |
|
|
|
|
#2 |
|
Участник
|
Никаких мыслей? Может хоть направление подскажут знающие люди? )
|
|
|
|
|
#3 |
|
Чайный пьяница
|
Добрый день,
Подсказываю - неправильно пользуетесь параметрами. Посмотрите эту ссылку - https://technet.microsoft.com/en-us/...or=-2147217396 Чтобы помочь вам сильнее выложите сюда код вашего запроса, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#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> |
|
|
|
|
#5 |
|
Участник
|
Повторюсь, есть еще параметры, но все они пляшут от ContractId и имеет вид вроде этого:
<ReportParameter Name="CRM_Buyer"> <DataType>String</DataType> <DefaultValue> <DataSetReference> <DataSetName>Contract</DataSetName> <ValueField>accountid</ValueField> </DataSetReference> </DefaultValue> <Prompt>Buyer</Prompt> </ReportParameter> Возможно дело в них, но как понять какого параметра не хватает в момент создания отчета я не могу. |
|
|
|
|
#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 |
|
|
|
|
#7 |
|
Участник
|
А что же делать с датасетами которые используют этот параметр?! Предположим мне по айдишнику контракта надо взять его строки, сейчас это делается с помощью параметра который вы советуете удалить
|
|
|
|
|
#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). | |
|
|
#9 |
|
Участник
|
Спасибо за наводку, ваш пример запроса не работает, но я думаю что его победю )
|
|
|
|
|
#10 |
|
Чайный пьяница
|
Ошибку покажите - трудно заниматься отладкой без наличия текста ошибки.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#11 |
|
Участник
|
|
|
|
|
|
#12 |
|
Чайный пьяница
|
Цитата:
Не может ваш код работать, потому что в CRM_FilteredContract будет передаваться контекст в котором будет запускаться ваш отчёт. Напимер при запуске отчёта с конкретной записи в @CRM_FilteredContract будет передано значение вроде Код: Select * From FilteredContract where FilteredContract = 'Guid'
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
| За это сообщение автора поблагодарили: Дмитрий А.А. (1). | |
|
|
#13 |
|
Участник
|
Короче говоря, методом проб и ошибок я смог его победить и теперь все работает
Но то ли я не умею искать, то ли гугл поломался, но нормального мануала, в котором было бы описано что да как я так и не нашел
|
|
|