Monday, May 31, 2010

Visual Studio 2010, Build error, Build (web): Object reference not set to an instance of an object

When upgrading a from previous version, Crystal report build provider will cause builder error, in ASP.NET 4 crystal reports are also pre-compiled using build provider for (.rpt), when compiler tries to pre-compile reports build in previous version, a build error "Object reference not set to an instance of an object" is thrown and build fails.

Possible work arround is to remove the build provider for (*.rpt) in your web.config:

There will be following construct under section:

<buildProviders>
<add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=14.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
</buildProviders>

We can change this to:

<buildProviders>
<add extension=".rpt" type="CrystalDecisions.Web.Compilation.RptBuildProvider, CrystalDecisions.Web, Version=14.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<remove extension=".rpt"/>
</buildProviders>

What we have done is removed the build provider for (.rpt), in this way the crystal reports will remain as it is and no build error will show.

Thursday, May 27, 2010

Object Oriented Javascript (Part-1)

We can develop object oriented JavaScript using function method, in JavaScript functions are the main constructs that can be called or referenced. To write object oriented reusable JavaScript libraries we can utilize the similar function which use every day.

JavaScript function:
At this point i assume that we know what a function is, for quick example it is as follows:
<script type="text/javascript">
//Declare a JavaScript function
function helloWorld()
{
alert('This is my first function.');
}

//calling a JavaScript function
helloWorld();
</script>


JavaScript Class
There is no syntax to declare classes in javascript, but purpose of object class is to encapsulate data and provide some attributes or methods for outer world. This can still be achieved in JavaScript using the same function.
Functions in JavaScript can be instantiated, which means we can create multiple copies of a JavaScript function the same way as we can create instances of a class.

There are different ways to do that, the simplest way is as follows:

<script type="text/javascript">
//Declare a JavaScript Class
function Car(car_color)
{
//Initialize attributes with default values
this.Color = car_color;
this.Model = '';
this.Make = '';
//Methods
this.getModel = function() {
return this.Model;
}
this.setModel = function(car_model) {
this.Model = car_model;
}
}

//Instantiate
var car1 = new Car('Red');
var car2 = new Car('Black');
//Set attributes
//Car1
car1.Make = 'Honda';
car1.setModel('2009');
//Car2
car2.Make = 'Ford';
car2.setModel('2008');
//Call instance method
alert(car1.getModel());
alert(car2.getModel());
</script>


In the above example we can see how two instance of car were created, initialized and accessed in the JavaScript. This simple approach can help in creating reusable code which is encapsulated in a function, this way JavaScript is more manageable and help a lot when you are doing complex scripting.