I have a main report that calls two instances of the same subreport with only a single parameter difference. Both the main report and the subreport can be viewed on the report server and exist in the same folder and use the same datasource and have the same permissions.
The report runs normally when viewed in the visual studio report project, but do not run when deployed.
EDIT: I've discovered the issue lies somewhere in the subreport having 4 or more parameters. After removing the multivalue parameters (down to 3) the report ran correctly. Adding a non-multivalue parameter to the subreport causes the issue to resurface.
I get the following error from the SQL Server logs:
processing!ReportServer_0-1!5884!11/20/2014-13:31:51:: e ERROR: An error has occurred while processing a sub-report. Details: Object reference not set to an instance of an object. Stack trace:
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.IsAllDataShared(SubReport subReport, Boolean canShareDataSets)
at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.FetchSubReports(Report report, IChunkFactory getReportChunks, ErrorContext errorContext, OnDemandMetadata odpMetadata, CatalogItemContext parentReportContext, OnDemandSubReportCallback subReportCallback, Int32 subReportLevel, Boolean snapshotProcessing, Boolean processWithCachedData, Boolean canShareDataSets, GlobalIDOwnerCollection globalIDOwnerCollection, ParameterInfoCollection parentQueryParameters)
reportrendering!ReportServer_0-1!5884!11/20/2014-13:31:51:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.RenderingObjectModelException: The subreport 'rptCombinedItems' could not be found at the specified location /HVAC_STAGING/subrptQuoteLineItems. Please verify that the subreport has been published and that the name is correct., ;
Info: Microsoft.ReportingServices.ReportProcessing.RenderingObjectModelException: The subreport 'rptCombinedItems' could not be found at the specified location /HVAC_STAGING/subrptQuoteLineItems. Please verify that the subreport has been published and that the name is correct.
processing!ReportServer_0-1!5884!11/20/2014-13:31:51:: e ERROR: An error has occurred while processing a sub-report. Details: The subreport 'rptCombinedItems' could not be found at the specified location /HVAC_STAGING/subrptQuoteLineItems. Please verify that the subreport has been published and that the name is correct. Stack trace:
at Microsoft.ReportingServices.OnDemandReportRendering.SubReport.CheckRetrievalStatus(Status status)
at Microsoft.ReportingServices.OnDemandReportRendering.SubReport.RetrieveSubreport()
As for parameter passing, the main report uses
<Parameters>
<Parameter Name="OfficeCopy">
<Value>=Parameters!OfficeCopy.Value</Value>
</Parameter>
<Parameter Name="QuoteProfile">
<Value>=Parameters!QuoteProfile.Value</Value>
</Parameter>
<Parameter Name="isBreakout">
<Value>=NOT(Parameters!ShowTotal.Value)</Value>
</Parameter>
<Parameter Name="quoteIDs">
<Value>=Parameters!quoteIDs.Value</Value>
</Parameter>
<Parameter Name="printOptions">
<Value>=Parameters!printOptions.Value</Value>
</Parameter>
And the subreport takes:
<ReportParameters>
<ReportParameter Name="OfficeCopy">
<DataType>Boolean</DataType>
<Prompt>OfficeCopy</Prompt>
</ReportParameter>
<ReportParameter Name="QuoteProfile">
<DataType>Integer</DataType>
<Prompt>QuoteProfile</Prompt>
</ReportParameter>
<ReportParameter Name="isBreakout">
<DataType>Boolean</DataType>
<Prompt>isBreakout</Prompt>
</ReportParameter>
<ReportParameter Name="quoteIDs">
<DataType>Integer</DataType>
<Prompt>quoteIDs</Prompt>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="printOptions">
<DataType>Integer</DataType>
<Prompt>printOptions</Prompt>
<MultiValue>true</MultiValue>
</ReportParameter>
</ReportParameters>
Finally, this is being called by Report Viewer 9.0.0.0 in a .NET 4.5.2 application, and the report server is running 10.0.5520.0. The server is running Server 2008.
Related
In an SSRS report, I have a fetchXML query that is dependent on the parameters that the users will choose from the UI that are defined in the report:
<fetch xmlns:generator="MarkMpn.SQL4CDS">
<entity name="new_r10logentries">
<attribute name="new_quarter" />
<attribute name="new_cr884_company" />
<link-entity name="cr884_company" to="new_cr884_company" from="cr884_companyid" alias="cr884_company" link-type="inner">
<attribute name="cr884_company" />
<attribute name="cr884_companyid" />
<filter>
<condition attribute="cr884_company" operator="eq" value="#CompanyParam">
<value />
</condition>
</filter>
</link-entity>
<filter>
<condition attribute="new_quarter" operator="eq" value="#QuarterParam" />
</filter>
</entity>
</fetch>
The parameters settings that I have are the below:
The companyParam is based on the dataset of the fetchXML and will populate the list of the companies' names.
The quarterParam is a list of options that are not based on the dataset.
When trying to publish/preview the report I got the below error:
Knowing I am passing the param as per the above query and the company column name that I am querying against is of type text and not GUID:
I hardcoded the company name in the query it works perfectly and in the parameters, it populates the list of the companies in the UI. However, when I pass the param in the fetchXML nothing happens as the CompanyName in the UI display null values.
Could you please support solving this issue? I have spent 3 hours changing in query with no result.
Resources that I look for support:
Input parameter SSRS
Community Dynamics
Any help is greatly appreciated.
Thank you!
your CompanyParam is list of companies which you retrieve from Dataset1 (from screenshot--> get values from query).
You pass this list(companies) selected one comapny by user to same dataset1 to retrieve your result and this is your circular reference.
Create a new Dataset "DatasetRetrieveCompanies" This dataset will give you all companies based on your fetchxml. Then add this dataset to your CompanyParam (get values from query). This should most probably solve your issue
I have almost zero experience with FetchXML so this is just an educated guess...
I would have expected you to have 2 datasets defined in your report.
Gets a list of companies based on QuarterParam
Gets the data for the report output based on CompanyParam
But it appears that you only have 1.
If I understand the XML you posted correctly, it looks like you have a parameter called 'CompanyParam' that uses a dataset that has a filter, the filter uses 'CompanyParam' - which is not possible, its a circular reference.
i am building a SSRS report using report builder 3.0.
i have parameter ACCNUMBER which contain a large number or records, and i am using inside my report the below function :
join(Parameters!ACCNUMBER.Value, ",")
when i generate the report for and i selected few values from ACCNUMBER parameter the report is generated normally; however if i generate the report while Select All values in ACCNUMBER parameter, i receive the below error:
appreciate your assistance.
It looks like you are on the right track but just need to also update the value for MaxJsonDeserializerMembers.
There is a (c)onstraint (on .NET framework or Web server I think) that allows only 1,000 values to be loaded under parameter drop down boxes
Add the following tags under section. Note: If
doesn't exists in config files add the whole tag from
below just after <\system.web> section. If "appSettings" is already
there just add 2 keys from below. I put 30000 as maximum number of
items, but you can use any number of values.
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="30000" />
<add key="aspnet:MaxJsonDeserializerMembers" value="30000" />
</appSettings>
From Mladen's MS BI Blog
I might be missing something here but i have the below scenario. In Dynamics CRM 2013 we have a SSRS report on CRM Dashboard. The rsreportserver.config file has the following values:
<Add Key="SecureConnectionLevel" Value="0"/>
<Add Key="CleanupCycleMinutes" Value="10"/>
<Add Key="MaxActiveReqForOneUser" Value="20"/>
<Add Key="DatabaseQueryTimeout" Value="180"/>
<Add Key="RunningRequestsScavengerCycle" Value="60"/>
<Add Key="RunningRequestsDbCycle" Value="60"/>
<Add Key="RunningRequestsAge" Value="30"/>
<Add Key="MaxScheduleWait" Value="5"/>
<Add Key="DisplayErrorLink" Value="true"/>
<Add Key="WebServiceUseFileShareStorage" Value="false"/>
As we can see here the databasequerytimeout has a value of 180 seconds. I went to CRM Dashboard which was having the SSRS report, the report took quite a lot of time more than 180 seconds but didn't timeout out.
The latest log entries from ExecutionLog3 view for the specific report that i executed is as follow:
TimeStart TimeEnd TimeDataRetrieval TimeProcessing TimeRendering
29:01.1 32:50.5 229173 10 132
So my confusion here is why the report didn't timedout ?? Isn't the TimeDataRetieval(229.173 seconds) should be less than 180 seconds or the report will timeout ??
The Report Timeout in Processing Options on SSRS server is set as Use the system default settngs which i believe is 180 seconds
Thank you...!
I have an SSRS report query for which is in fetchxml. The main dataset "DS_PromissoryNotes" which fetches data for the report has a pretty basic query.
<?xml version="1.0" encoding=""?>
<fetch distinct="false" mapping="logical" output-format="xml-platform" version="1.0" >
<entity name="promissorynote">
<attribute name="promissorynoteid" />
<attribute name="totalamount" />
<attribute name="name" />
<attribute name="duedate" />
<attribute name="pn_customer" />
<attribute name="pn_distributor" />
<attribute name="dateofissue" />
<order descending="false" attribute="name" />
<filter type="and" >
<condition attribute="promissorynoteid" value="#PromissoryNoteId" operator="in" />
</filter>
</entity>
</fetch>
As you can note that the fetchXML query takes a parameter #PromissoryNoteId which can be multiple so I have "Allow multiple" checked of course. Data for the parameter is fetched from another dataset "DS_PNID" which is almost similar to the above fetchXML query only fetching 'name' and 'promissorynoteid' attribute with no filter condition.
I want to be able to select multiple records from the Promissory Notes grid displayed on the entity's page and run report for the selected record. It should display the report data and also mark the selected PromissoryNoteIds in the multi-select dropdown filter so that I can modify the selection and view updated report from the report page itself.
I tried applying prefiltering on the main dataset "DS_PromissoryNotes" like this
<entity name="core_promissorynote" enableprefiltering="true" prefilterparametername="CRM_promissorynoteid">
After doing this I added it as new report. When I ran the report it gives me same result i.e. I have to manually select the PromissoryIDs from the filter dropdown. Promissory ID belonging to those records are not preselected.
P.S. When I remove the parameter and only use prefilter, it works fine. But I want to have that dropdown as the report is also present in report area where the report is run without selecting the records and the dropdown is the only way for selecting the PromissoryIds. I also don't want to make 2 separate reports.
Please help.
OK so I figured it out the next day. Didn't have time to post so posting it now.
What I basically did is,
Removed prefiltering from the main dataset. Also deleted the parameter
which was created due to prefiltering.
Created another dataset "DS_PrefilteredPNID" which is same as
"DS_PNID" (dataset which fetches Promissory Note IDs for my
parameter) and applied prefiltering on the newly created dataset.
Make sure that the newly created parameter is placed above the old one in
sequence.
Now, edit the old parameter. In the default section, choose "from
query". Then select the newly created dataset and value.
BOOM! This works flawlessly.
I'm noticing some strange behaviors when deploying reports from BIDS to SSRS. I have a parameter that has default values, but those default values don't seem to be getting propagated to the Report Server (they are stored in Parameters field in the Catalog table). Yet when I add new parameters I could see the field is changing. It's almost like the deployment tool is ignoring certain parameters. Any thoughts?
If this helps, my RDL looks like this:
<ReportParameter Name="INCLUDEDFIRMS">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>1</Value>
</Values>
</DefaultValue>
<Prompt>Monkey</Prompt>
<Hidden>true</Hidden>
<MultiValue>true</MultiValue>
</ReportParameter>
Yet the field in the database after deployment looks like this:
<Parameter>
<Name>INCLUDEDFIRMS</Name>
<Type>Integer</Type>
<Nullable>False</Nullable>
<AllowBlank>False</AllowBlank>
<MultiValue>True</MultiValue>
<UsedInQuery>True</UsedInQuery>
<State>MissingValidValue</State>
<Prompt />
<DynamicPrompt>False</DynamicPrompt>
<PromptUser>True</PromptUser>
<DefaultValues>
<Value>23</Value>
<Value>17</Value>
</DefaultValues>
<Values>
<Value>23</Value>
<Value>17</Value>
</Values>
</Parameter>
When overwriting an existing version of a report, certain aspects of the parameters are not updated. This lets you preserve different defaults on the server and helps avoid interruptions to subscriptions.
Try deleting the SSRS version of the report and then re-deploy. This should update the parameters. (But at the expense of losing any existing subscriptions.)