I have noticed within the group of consultants and developers that the move to Visual Studio to handle report layout is quite a leap. Not many are courageous enough to make this leap.
One of the most used tricks in the new layout is how headers and footers are handled. To get the correct data up to the header og down to the footer a method using Visual Basic Code is used.
In our payroll system upgrade from NAV 2009 to NAV 2013 all reports had been upgraded. However, they did not work properly and so the problem ended on my desk.
I found the problem and of course Claus had already blogged about this change of functionality between NAV 2009 and NAV 2013.
“The textbox is hidden and needs to be first thing that activated when the report is rendered. So hold that thought, it has to be hidden and at the top for Code.GetData to work. In NAV 2009 reports are rendered in Report Viewer 2008 this works like a charm, but in Report Viewer 2010 the SSRS team has been so kind to us to change the logic of how a reports is rendered. So if an textbox is hidden in RDLC 2008, the expression in this hidden textbox, is rendered at the end. So as I said the SetData textbox has to be hidden and at the top for Code.GetData to work, but now it is rendered as the last thing, and of course the result is that the fields get out of sync and the very idea using Code.GetData and Code.SetData is broken in NAV 2013 with Report Viewer 2010. Interesting thought!!! “
The first thing I needed to do was to add a single line of code to the Code.SetData function. Go to Report Properties to solve this.
The “Return True” line makes sure that the field is visible and therefore rendered at the top.
Next to change the text box with the Code.SetData function. In NAV 2009 layout we called this function by using it as an expression and set visibility to hidden.
In NAV 2013 layout clear the expression and move the Code.SetData function to the Visibility Section.
And that’s it folks…