Remote report processing requires Microsoft SQL Server 2008 Reporting Services or later.

Recently I modified one of my SSRS projects to use ReportViewerControl 2010 version instead of the old version by downloading the control from here

After compiling my project and publishing it I tried to run the report and ran into the error

Remote report processing requires Microsoft SQL Server 2008 Reporting Services or later.

After a bit of surfing I realized that the prerequisites in the microsoft download page of the control listed this

  • Microsoft SQL Server 2008 Reporting Services or higher for server processing mode
  • .NET Framework 3.5 SP1 or .NET Framework 4.0

Hmm. Strange. So be careful before you migrate your report viewer control for your SSRS projects from version 2008 to 2010. Make sure you have SQL Server 2008 at the server.



Passing a value from external class to a page and binding it to a control

Off late, I was working in a WCF application which involves all the crazy WCF stuffs like duplex contract, callback contract, asynchronous delegates etc. At one point I was in a position where I need to pass an item from an external class to an page and bind it to the control.

To call a function in a page from another class we have to either declare the function to be static (so that we can invoke it directly with the class name) or create an instance for the page class and call it through the object.

Both of them wont work because of the following reasons –

  1. If the function is static, it can’t operate on the controls present in the page (since the controls are not static)
  2. If you create an instance for that page class all the controls will be lost as a new instance of the page is created

Finally i achieve it through events and by declaring the function to be static.

//Create a delegate for the event
private delegate void DelegateHandler (type object);

//Create the event
private static event DelegateHandler RaiseEvent event;

//Create an object for the delegate
private static DelegateHandler oHandler = null;

//Add the function to be called from the static function to the delegate
oHandler = new DelegateHandler(OriginalFunctionToBeCalled);

//Add the delegate to the event
event += oHandler;

public static void StaticFunctionToBeCalled(Type obj)
    event(obj); //Raise the event
private void OriginalFunctionToBeCalled(Type obj)
    //bind the value to the control

Thats it. Hope it would be useful for someone.