public void BindGrid()
{//i have bind data from date to toDate and i have used some 3 tire architecture to bind that Parent gridview you can bind this Parent Gridview as in Your comfortable way of coding
if (TxtFrmDate.Text != "" || TxtToDate.Text != "")
{
HouseBO hBO = new HouseBO();

This is my Utility Class Which is derived in a specific folder like App Code
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;
using System.Data.SqlClient;

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

Friday, September 23

Introduction

This article discusses and implements 3-tier architecture using C# and a dummy customer using MS Access database. In this article I am trying to implement a small reusable component that maintains customers in 3-tier architecture. It shows how to add, update and find customer details.

Background

To begin with I would like to discuss a little about the theoretical aspects of 3-tier architecture. I'll briefly go through what 3-tier architecture is and what are its advantages.

What is a 3-tier architecture?

Three-tier (layer) is a client-server architecture in which the user interface, business process (business rules) and data storage and data access are developed and maintained as independent modules or most often on separate platforms. Basically, there are 3 layers, tier 1 (presentation tier, GUI tier), tier 2 (business objects, business logic tier) and tier 3 (data access tier). These tiers can be developed and tested separately.
What is the need for dividing the code in 3-tiers? Separation of the user interface from business logic and database access has many advantages. Some of the advantages are as follows:

Reusability of the business logic component results in quick development. Let's say we have a module that handles adding, updating, deleting and finding customers in the system. As this component is developed and tested, we can use it in any other project that might involve maintaining customers.

Transformation of the system is easy. Since the business logic is separate from the data access layer, changing the data access layer won�t affect the business logic module much. Let's say if we are moving from SQL Server data storage to Oracle there shouldn�t be any changes required in the business layer component and in the GUI component.

Change management of the system is easy. Let's say if there is a minor change in the business logic, we don�t have to install the entire system in individual user�s PCs. E.g. if GST (TAX) is changed from 10% to 15% we only need to update the business logic component without affecting the users and without any downtime.

Having separate functionality servers allows for parallel development of individual tiers by application specialists.

Provides more flexible resource allocation. Can reduce the network traffic by having the functionality servers strip data to the precise structure needed before sending it to the clients.

Using the code

This component has 3 tiers. Tier 1 or GUI tier with a form will be called FrmGUI, tier 2 or business logic will be called BOCustomer short for Bussniess Object Customer and finally the tier 3 or the data tier will be called DACustomer short for Data Access Customer. I have compiled all the 3 tiers in the same project for ease of work. I am including all the source code along with the MS Access database that is used to test this project in the included zip file.

User Interface tier

This is a chunk of code from the user interface. I am only including the functions that are used to call the middle tier or the business logic layer.
I am keeping a reference to business logic layer as BOCustomer.

Business Logic layer

Here, I am including all the code for this tier. Basically it has properties that are needed to define the customer object. But as I mentioned it is just a dummy customer and many other properties can be added if required. It also has all the methods including Add, update, find that are required to maintain customer details.
This is the middle tier and acts between the GUI and the Data access layer. It keeps a reference to the data access tier as cusData = new DACustomer(). It also has a reference to System.Data namespace as sometimes it returns details in the form of DataSet to the GUI tier.

Data Access Layer

The data tier has details to manipulate an MS Access database. However, all these details are transparent and do not affect the business logic layer. This module has a reference to the business logic layer as BOCustomer cus. To make the usage easier and be supported by any other database I have created some constants including the database name and field name that need to be changed as per the customer table details. This is an usable module for any database after making these changes.

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;

By click on that button You can store our database in a specific folder which is provided by you.Before that go to server explorer or your management studio and right click on database i,e. shiba(which is my database name) and click on Detach.