AX Reporting: Case Matters, In Some Cases, In Case You Were Wondering
It’s the night before the code lockdown and you are working on that last report to check in. 11pm to be exact. You’ve built an AX report that takes advantage of the Report Data Provider along with a data contract. Easy peasy, right? Then why won’t your new report see and use the report parameters defined in the data contract class?
The solution to your problem could be as simple as a function with the wrong case.
Take a look at this RDP class. See the issue?
[ SRSReportQueryAttribute(queryStr(PayrollEmployeeSummary)), SRSReportParameterAttribute(classstr(PayrollEmployeeSummaryDPContract)) ] public class PayrollEmployeeSummaryDP extends SRSReportDataProviderBase { PayrollEmployeeSummaryTmp empSummaryTmp; }
The classstr function inside the class attributes is the problem child here. Notice that the correct case for this function is classStr.
Dynamics AX 2012 successfully compiles the above class. The report will successfully run. Unfortunately, the parameters are completely ignored. The problem occurs when trying to connect the report to the parameters. C# is case sensitive and cannot successfully parse the class attribute with classstr in it. The net effect is that the data source brought over to the SSRS report provides the source query or table data fields. However, the report cannot link to the data contract to pick up the parameter definitions.
The repair to the code is to correct the case of the function to classStr. Compile the RDP class, then open the report Visual Studio project. Refresh the report data source(s) that use this class and you will now see and use parameters in your report. Report completed in time for code lockdown.
Search the Stoneridge Software blog by Development category or the tags below, for additional reporting code tips, fixes and tricks.
Under the terms of this license, you are authorized to share and redistribute the content across various mediums, subject to adherence to the specified conditions: you must provide proper attribution to Stoneridge as the original creator in a manner that does not imply their endorsement of your use, the material is to be utilized solely for non-commercial purposes, and alterations, modifications, or derivative works based on the original material are strictly prohibited.
Responsibility rests with the licensee to ensure that their use of the material does not violate any other rights.