Click here to Skip to main content
Click here to Skip to main content
Articles » Database » Database » Utilities » Downloads
 
Add your own
alternative version

DACBuilder – Data Access objects generation tool based on XML and XSL templates transformation

, 31 Mar 2006 CPOL
The DACBuilder application provides auto-generation features from multiple database systems in multiple programming languages.
dacbuilder_demo.zip
DACBuilder_demo
DACBuilder.exe
DACCreator.dll
DataAccess.dll
DataGridCustomColumns.dll
DotNetScripting.dll
FieldTypes.dll
Templates
connection_strings
Access.xsl
AS400(iSeries).xsl
DBF - FoxPro.xsl
DSN.xsl
Excel.xsl
Exchange.xsl
Firebird.xsl
IBM DB2.xsl
Informix.xsl
Ingres.xsl
Interbase.xsl
Lightbase.xsl
Mimer SQL.xsl
MySQL.xsl
Oracle.xsl
Paradox.xsl
Pervasive.xsl
PostgreSQL.xsl
SQL Server 2005.xsl
SQL Server.xsl
Sybase.xsl
Text.xsl
UDL.xsl
Visual FoxPro.xsl
CustomFields
CustomFieldsPropertyList_sp.xsl
CustomFieldsPropertyList_tbl.xsl
CustomFieldsProperty_sp.xsl
CustomFieldsProperty_tbl.xsl
CustomFieldsSecurity_sp.xsl
CustomFieldsSecurity_tbl.xsl
CustomFieldsTableColumn_SELECT_ByFKTable_sp.xsl
CustomFieldsTableColumn_sp.xsl
CustomFieldsTableColumn_tbl.xsl
CustomFieldsTable_SELECT_ByName_sp.xsl
CustomFieldsTable_sp.xsl
CustomFieldsTable_tbl.xsl
CustomFieldsType_insert.xsl
CustomFieldsType_sp.xsl
CustomFieldsType_tbl.xsl
CustomFieldsValueList_sp.xsl
CustomFieldsValueList_tbl.xsl
CustomFieldsValuesBool_CSharp.xsl
CustomFieldsValuesBool_sp.xsl
CustomFieldsValuesBool_tbl.xsl
CustomFieldsValuesBool_VisualBasic.xsl
CustomFieldsValuesDateTime_CSharp.xsl
CustomFieldsValuesDateTime_sp.xsl
CustomFieldsValuesDateTime_tbl.xsl
CustomFieldsValuesDateTime_VisualBasic.xsl
CustomFieldsValuesDecimal_CSharp.xsl
CustomFieldsValuesDecimal_sp.xsl
CustomFieldsValuesDecimal_tbl.xsl
CustomFieldsValuesDecimal_VisualBasic.xsl
CustomFieldsValuesInteger_CSharp.xsl
CustomFieldsValuesInteger_sp.xsl
CustomFieldsValuesInteger_tbl.xsl
CustomFieldsValuesInteger_VisualBasic.xsl
CustomFieldsValuesString_CSharp.xsl
CustomFieldsValuesString_sp.xsl
CustomFieldsValuesString_tbl.xsl
CustomFieldsValuesString_VisualBasic.xsl
CustomFieldsValues_DELETE_sp.xsl
CustomFieldsValues_SELECT_sp.xsl
CustomFields_all.xsl
CustomFields_CSharp_util.xsl
CustomFields_sp.xsl
CustomFields_tbl.xsl
CustomFields_VisualBasic_util.xsl
DACCustomFields_CSharp.xsl
DACCustomFields_VisualBasic.xsl
GetPrimaryKeyColumnName_sp.xsl
GetPropertyListValues_fn.xsl
GetTableCustomFieldsXML_sp.xsl
select_custom_fields_type.xsl
vwCustomFields.xsl
DACExample_CSharp.xsl
DACExample_VisualBasic.xsl
DataAccessComponent_CSharp_Odbc.xsl
DataAccessComponent_CSharp_OleDb.xsl
DataAccessComponent_CSharp_SQL.xsl
DataAccessComponent_VisualBasic_Odbc.xsl
DataAccessComponent_VisualBasic_OleDb.xsl
DataAccessComponent_VisualBasic_SQL.xsl
DataAccessContainer_CSharp_Odbc.xsl
DataAccessContainer_CSharp_OleDb.xsl
DataAccessContainer_CSharp_SQL.xsl
DataAccessContainer_VisualBasic_Odbc.xsl
DataAccessContainer_VisualBasic_OleDb.xsl
DataAccessContainer_VisualBasic_SQL.xsl
DataAccess_PHP.xsl
dataset_schema.xsl
dataset_template.xsx
execRoutine_CSharp_SQL.xsl
execRoutine_VisualBasic_SQL.xsl
fnGetExtendedProperty_fn.xsl
GetRoutineParametersXML_sp.xsl
GetTableColumnsXML_sp.xsl
GET_NEXT_ID_sp.xsl
html.xsl
KeyTables_tbl.xsl
Libraries
CustomFields.dll
DACCreator.dll
DataGridCustomColumns.dll
DotNetScripting.dll
Odbc
DataAccessComponent.dll
DataAccessContainer.dll
OleDb
DataAccessComponent.dll
DataAccessContainer.dll
RJS.Web.WebControl.PopCalendar.dll
SQL
DataAccessComponent.dll
DataAccessContainer.dll
msaccess_2_sql.xsl
mysql_2_sql.xsl
select_type.xsl
simpleDAC_CSharp_Odbc.xsl
simpleDAC_CSharp_OleDb.xsl
simpleDAC_CSharp_SQL.xsl
simpleDAC_JScript_SQL.xsl
simpleDAC_PHP.xsl
simpleDAC_VB60_SQL.xsl
simpleDAC_VBScript_SQL.xsl
simpleDAC_VisualBasic_Odbc.xsl
simpleDAC_VisualBasic_OleDb.xsl
simpleDAC_VisualBasic_SQL.xsl
simpleDAC_WebUI_CSharp.xsl
simpleDAC_WebUI_VisualBasic.xsl
simpleDAC_WinUI_CSharp.xsl
simpleDAC_WinUI_VisualBasic.xsl
split.xsl
sp_ora.xsl
sp_sql.xsl
sp_sql_create_table.xsl
sp_sql_historic.xsl
sp_sql_insert_rows.xsl
sp_sql_search.xsl
sp_sql_select_by_pk.xsl
WebForm.xsl
WebUserControl.xsl
WindowsForm_resx.xsl
Xdo.ConnectionStringProject.dll
dacbuilder_src.zip
DACBuilder_src
App.ico
arrow_down.bmp
CustomFields
DACBuilder.csproj.user
Templates
connection_strings
Access.xsl
AS400(iSeries).xsl
DBF - FoxPro.xsl
DSN.xsl
Excel.xsl
Exchange.xsl
Firebird.xsl
IBM DB2.xsl
Informix.xsl
Ingres.xsl
Interbase.xsl
Lightbase.xsl
Mimer SQL.xsl
MySQL.xsl
Oracle.xsl
Paradox.xsl
Pervasive.xsl
PostgreSQL.xsl
SQL Server 2005.xsl
SQL Server.xsl
Sybase.xsl
Text.xsl
UDL.xsl
Visual FoxPro.xsl
CustomFields
CustomFieldsPropertyList_sp.xsl
CustomFieldsPropertyList_tbl.xsl
CustomFieldsProperty_sp.xsl
CustomFieldsProperty_tbl.xsl
CustomFieldsSecurity_sp.xsl
CustomFieldsSecurity_tbl.xsl
CustomFieldsTableColumn_SELECT_ByFKTable_sp.xsl
CustomFieldsTableColumn_sp.xsl
CustomFieldsTableColumn_tbl.xsl
CustomFieldsTable_SELECT_ByName_sp.xsl
CustomFieldsTable_sp.xsl
CustomFieldsTable_tbl.xsl
CustomFieldsType_insert.xsl
CustomFieldsType_sp.xsl
CustomFieldsType_tbl.xsl
CustomFieldsValueList_sp.xsl
CustomFieldsValueList_tbl.xsl
CustomFieldsValuesBool_CSharp.xsl
CustomFieldsValuesBool_sp.xsl
CustomFieldsValuesBool_tbl.xsl
CustomFieldsValuesBool_VisualBasic.xsl
CustomFieldsValuesDateTime_CSharp.xsl
CustomFieldsValuesDateTime_sp.xsl
CustomFieldsValuesDateTime_tbl.xsl
CustomFieldsValuesDateTime_VisualBasic.xsl
CustomFieldsValuesDecimal_CSharp.xsl
CustomFieldsValuesDecimal_sp.xsl
CustomFieldsValuesDecimal_tbl.xsl
CustomFieldsValuesDecimal_VisualBasic.xsl
CustomFieldsValuesInteger_CSharp.xsl
CustomFieldsValuesInteger_sp.xsl
CustomFieldsValuesInteger_tbl.xsl
CustomFieldsValuesInteger_VisualBasic.xsl
CustomFieldsValuesString_CSharp.xsl
CustomFieldsValuesString_sp.xsl
CustomFieldsValuesString_tbl.xsl
CustomFieldsValuesString_VisualBasic.xsl
CustomFieldsValues_DELETE_sp.xsl
CustomFieldsValues_SELECT_sp.xsl
CustomFields_all.xsl
CustomFields_CSharp_util.xsl
CustomFields_sp.xsl
CustomFields_tbl.xsl
CustomFields_VisualBasic_util.xsl
DACCustomFields_CSharp.xsl
DACCustomFields_VisualBasic.xsl
GetPrimaryKeyColumnName_sp.xsl
GetPropertyListValues_fn.xsl
GetTableCustomFieldsXML_sp.xsl
select_custom_fields_type.xsl
vwCustomFields.xsl
DACExample_CSharp.xsl
DACExample_VisualBasic.xsl
DataAccessComponent_CSharp_Odbc.xsl
DataAccessComponent_CSharp_OleDb.xsl
DataAccessComponent_CSharp_SQL.xsl
DataAccessComponent_VisualBasic_Odbc.xsl
DataAccessComponent_VisualBasic_OleDb.xsl
DataAccessComponent_VisualBasic_SQL.xsl
DataAccessContainer_CSharp_Odbc.xsl
DataAccessContainer_CSharp_OleDb.xsl
DataAccessContainer_CSharp_SQL.xsl
DataAccessContainer_VisualBasic_Odbc.xsl
DataAccessContainer_VisualBasic_OleDb.xsl
DataAccessContainer_VisualBasic_SQL.xsl
DataAccess_PHP.xsl
dataset_schema.xsl
dataset_template.xsx
execRoutine_CSharp_SQL.xsl
execRoutine_VisualBasic_SQL.xsl
fnGetExtendedProperty_fn.xsl
GetRoutineParametersXML_sp.xsl
GetTableColumnsXML_sp.xsl
GET_NEXT_ID_sp.xsl
html.xsl
KeyTables_tbl.xsl
Libraries
CustomFields.dll
DACCreator.dll
DataGridCustomColumns.dll
DotNetScripting.dll
Odbc
DataAccessComponent.dll
DataAccessContainer.dll
OleDb
DataAccessComponent.dll
DataAccessContainer.dll
RJS.Web.WebControl.PopCalendar.dll
SQL
DataAccessComponent.dll
DataAccessContainer.dll
msaccess_2_sql.xsl
mysql_2_sql.xsl
select_type.xsl
simpleDAC_CSharp_Odbc.xsl
simpleDAC_CSharp_OleDb.xsl
simpleDAC_CSharp_SQL.xsl
simpleDAC_JScript_SQL.xsl
simpleDAC_PHP.xsl
simpleDAC_VB60_SQL.xsl
simpleDAC_VBScript_SQL.xsl
simpleDAC_VisualBasic_Odbc.xsl
simpleDAC_VisualBasic_OleDb.xsl
simpleDAC_VisualBasic_SQL.xsl
simpleDAC_WebUI_CSharp.xsl
simpleDAC_WebUI_VisualBasic.xsl
simpleDAC_WinUI_CSharp.xsl
simpleDAC_WinUI_VisualBasic.xsl
split.xsl
sp_ora.xsl
sp_sql.xsl
sp_sql_create_table.xsl
sp_sql_historic.xsl
sp_sql_insert_rows.xsl
sp_sql_search.xsl
sp_sql_select_by_pk.xsl
WebForm.xsl
WebUserControl.xsl
WindowsForm_resx.xsl
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Configuration;
using System.Data;
using System.Xml;
using System.IO;

namespace DACBuilder
{
	/// <summary>
	/// Summary description for frmResources.
	/// </summary>
	public class frmResources : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Panel pnlGrid;
		private System.Windows.Forms.Panel pnlText;
		private System.Windows.Forms.DataGrid dgResources;
		private System.Windows.Forms.RichTextBox rtfResources;

		private string templatesPath;
		private XmlDataDocument doc;
		private bool bIsDirty = false;
		private string CurrentFile = string.Empty;

		private System.Windows.Forms.MainMenu mainMenu;
		private System.Windows.Forms.MenuItem mnuResources;
		private System.Windows.Forms.MenuItem mnuResourcesXML;
		private System.Windows.Forms.MenuItem mnuResourcesData;
		private System.Windows.Forms.MenuItem mnuResourcesBar1;
		private System.Windows.Forms.MenuItem mnuResourcesSave;
		private System.Windows.Forms.MenuItem mnuResourcesSaveAs;
		private System.Windows.Forms.MenuItem mnuResourcesOpen;
		private System.Windows.Forms.MenuItem mnuResourcesNew;

		/// <summary>
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public frmResources()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
			templatesPath = Application.StartupPath + @"\Templates\";
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.pnlGrid = new System.Windows.Forms.Panel();
			this.dgResources = new System.Windows.Forms.DataGrid();
			this.pnlText = new System.Windows.Forms.Panel();
			this.rtfResources = new System.Windows.Forms.RichTextBox();
			this.mainMenu = new System.Windows.Forms.MainMenu();
			this.mnuResources = new System.Windows.Forms.MenuItem();
			this.mnuResourcesData = new System.Windows.Forms.MenuItem();
			this.mnuResourcesXML = new System.Windows.Forms.MenuItem();
			this.mnuResourcesBar1 = new System.Windows.Forms.MenuItem();
			this.mnuResourcesSave = new System.Windows.Forms.MenuItem();
			this.mnuResourcesSaveAs = new System.Windows.Forms.MenuItem();
			this.mnuResourcesOpen = new System.Windows.Forms.MenuItem();
			this.mnuResourcesNew = new System.Windows.Forms.MenuItem();
			this.pnlGrid.SuspendLayout();
			((System.ComponentModel.ISupportInitialize)(this.dgResources)).BeginInit();
			this.pnlText.SuspendLayout();
			this.SuspendLayout();
			// 
			// pnlGrid
			// 
			this.pnlGrid.Controls.Add(this.dgResources);
			this.pnlGrid.Dock = System.Windows.Forms.DockStyle.Fill;
			this.pnlGrid.Location = new System.Drawing.Point(0, 0);
			this.pnlGrid.Name = "pnlGrid";
			this.pnlGrid.Size = new System.Drawing.Size(824, 266);
			this.pnlGrid.TabIndex = 0;
			// 
			// dgResources
			// 
			this.dgResources.DataMember = "";
			this.dgResources.Dock = System.Windows.Forms.DockStyle.Fill;
			this.dgResources.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dgResources.Location = new System.Drawing.Point(0, 0);
			this.dgResources.Name = "dgResources";
			this.dgResources.Size = new System.Drawing.Size(824, 266);
			this.dgResources.TabIndex = 0;
			// 
			// pnlText
			// 
			this.pnlText.Controls.Add(this.rtfResources);
			this.pnlText.Dock = System.Windows.Forms.DockStyle.Fill;
			this.pnlText.Location = new System.Drawing.Point(0, 0);
			this.pnlText.Name = "pnlText";
			this.pnlText.Size = new System.Drawing.Size(824, 266);
			this.pnlText.TabIndex = 1;
			this.pnlText.Visible = false;
			// 
			// rtfResources
			// 
			this.rtfResources.Dock = System.Windows.Forms.DockStyle.Fill;
			this.rtfResources.Location = new System.Drawing.Point(0, 0);
			this.rtfResources.Name = "rtfResources";
			this.rtfResources.Size = new System.Drawing.Size(824, 266);
			this.rtfResources.TabIndex = 0;
			this.rtfResources.Text = "";
			this.rtfResources.TextChanged += new System.EventHandler(this.rtfResources_TextChanged);
			// 
			// mainMenu
			// 
			this.mainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					 this.mnuResources});
			// 
			// mnuResources
			// 
			this.mnuResources.Index = 0;
			this.mnuResources.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																						 this.mnuResourcesNew,
																						 this.mnuResourcesSave,
																						 this.mnuResourcesSaveAs,
																						 this.mnuResourcesOpen,
																						 this.mnuResourcesBar1,
																						 this.mnuResourcesData,
																						 this.mnuResourcesXML});
			this.mnuResources.Text = "Resources";
			// 
			// mnuResourcesData
			// 
			this.mnuResourcesData.Index = 5;
			this.mnuResourcesData.Text = "Data";
			this.mnuResourcesData.Click += new System.EventHandler(this.mnuResourcesData_Click);
			// 
			// mnuResourcesXML
			// 
			this.mnuResourcesXML.Index = 6;
			this.mnuResourcesXML.Text = "XML";
			this.mnuResourcesXML.Click += new System.EventHandler(this.mnuResourcesXML_Click);
			// 
			// mnuResourcesBar1
			// 
			this.mnuResourcesBar1.Index = 4;
			this.mnuResourcesBar1.Text = "-";
			// 
			// mnuResourcesSave
			// 
			this.mnuResourcesSave.Index = 1;
			this.mnuResourcesSave.Text = "Save";
			this.mnuResourcesSave.Click += new System.EventHandler(this.mnuResourcesSave_Click);
			// 
			// mnuResourcesSaveAs
			// 
			this.mnuResourcesSaveAs.Index = 2;
			this.mnuResourcesSaveAs.Text = "Save as...";
			this.mnuResourcesSaveAs.Click += new System.EventHandler(this.mnuResourcesSaveAs_Click);
			// 
			// mnuResourcesOpen
			// 
			this.mnuResourcesOpen.Index = 3;
			this.mnuResourcesOpen.Text = "Open...";
			this.mnuResourcesOpen.Click += new System.EventHandler(this.mnuResourcesOpen_Click);
			// 
			// mnuResourcesNew
			// 
			this.mnuResourcesNew.Index = 0;
			this.mnuResourcesNew.Text = "New";
			this.mnuResourcesNew.Click += new System.EventHandler(this.mnuResourcesNew_Click);
			// 
			// frmResources
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(824, 266);
			this.Controls.Add(this.pnlText);
			this.Controls.Add(this.pnlGrid);
			this.Menu = this.mainMenu;
			this.Name = "frmResources";
			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
			this.Text = "Resources";
			this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
			this.Load += new System.EventHandler(this.frmResources_Load);
			this.pnlGrid.ResumeLayout(false);
			((System.ComponentModel.ISupportInitialize)(this.dgResources)).EndInit();
			this.pnlText.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		private void frmResources_Load(object sender, System.EventArgs e)
		{
			//pnlText.Size = new Size(0, pnlText.Size.Height);
			pnlText.Visible = false;
			GenerateResource(templatesPath + "template.resx");
			GetXml();
		}

		#region Functions

		private void GenerateResource(string fileName)
		{
			try
			{
				doc = new XmlDataDocument();
				doc.DataSet.ReadXmlSchema(templatesPath + "template.resx");
				doc.Load(fileName);
			
				doc.DataSet.Tables[0].RowChanged += new DataRowChangeEventHandler(frmResources_RowChanged);
				doc.DataSet.Tables[0].RowDeleted += new DataRowChangeEventHandler(frmResources_RowDeleted);
				dgResources.DataSource = doc.DataSet.Tables[0].DefaultView;
			}
			catch(Exception ex)
			{
				while(ex != null)
				{
					MessageBox.Show(ex.Message);
					ex = ex.InnerException;
				}
			}
		}

		private void GetXml()
		{
			rtfResources.Text = doc.OuterXml;
			//XmlTextWriter writer = new XmlTextWriter();
			//doc.Save(writer);
		}

		private void SetXml()
		{
			try
			{
				doc = new XmlDataDocument();
				doc.DataSet.ReadXmlSchema(templatesPath + "template.resx");
				doc.LoadXml(rtfResources.Text);
				doc.DataSet.Tables[0].RowChanged += new DataRowChangeEventHandler(frmResources_RowChanged);
				doc.DataSet.Tables[0].RowDeleted += new DataRowChangeEventHandler(frmResources_RowDeleted);
				dgResources.DataSource = doc.DataSet.Tables[0].DefaultView;
				bIsDirty = false;
			}
			catch(Exception ex)
			{
				while(ex != null)
				{
					MessageBox.Show(ex.Message);
					ex = ex.InnerException;
				}
			}
		}

		private void SaveFile()
		{
			SaveFileDialog saveDlg = new SaveFileDialog();
			saveDlg.Title = "Save ResX file";
			saveDlg.Filter = "ResX files (*.resx)|*.resx";
			if(saveDlg.ShowDialog() == DialogResult.OK)
			{
				CurrentFile = saveDlg.FileName;
				if(CurrentFile != "")
				{
					try
					{
						doc.Save(CurrentFile);
					}
					catch(Exception ex)
					{
						while(ex != null)
						{
							MessageBox.Show(ex.Message);
							ex = ex.InnerException;
						}
					}
				}
			}
		}

		private void OpenFile()
		{
			OpenFileDialog openDlg = new OpenFileDialog();
			openDlg.Title = "Open ResX file";
			openDlg.Filter = "ResX files (*.resx)|*.resx";
			if(openDlg.ShowDialog() == DialogResult.OK)
			{
				if(openDlg.FileName != "")
				{
					GenerateResource(openDlg.FileName);
					CurrentFile = openDlg.FileName;
				}
			}
		}

		#endregion

		private void frmResources_RowChanged(object sender, DataRowChangeEventArgs e)
		{
			GetXml();
		}

		private void frmResources_RowDeleted(object sender, DataRowChangeEventArgs e)
		{
			GetXml();
		}

		private void rtfResources_TextChanged(object sender, System.EventArgs e)
		{
			bIsDirty = true;

		}

		private void mnuResourcesData_Click(object sender, System.EventArgs e)
		{
			pnlText.Visible = false;
			pnlGrid.Visible = true;
			if(bIsDirty)
			{
				SetXml();
			}
		}

		private void mnuResourcesXML_Click(object sender, System.EventArgs e)
		{
			pnlText.Visible = true;
			pnlGrid.Visible = false;
		}

		private void mnuResourcesSave_Click(object sender, System.EventArgs e)
		{
			if(CurrentFile != "")
			{
				try
				{
					doc.Save(CurrentFile);
				}
				catch(Exception ex)
				{
					while(ex != null)
					{
						MessageBox.Show(ex.Message);
						ex = ex.InnerException;
					}
				}
			}
			else
			{
				mnuResourcesSaveAs_Click(sender, e);
			}
		}

		private void mnuResourcesSaveAs_Click(object sender, System.EventArgs e)
		{
			SaveFile();
		}

		private void mnuResourcesOpen_Click(object sender, System.EventArgs e)
		{
			OpenFile();
		}

		private void mnuResourcesNew_Click(object sender, System.EventArgs e)
		{
			GenerateResource(templatesPath + "template.resx");
			CurrentFile = string.Empty;
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Dan Radu
Web Developer Telstra Internet
Australia Australia
I live and work in Bucharest, Romania. I am programmer since 1998, when I have developed a "good taste" application for a catering company. Now I develop .NET applications (windows and ASP.NET) for large SQL Server database systems, with tens of millions of records.
I like to develop also in other languages like Object Pascal (Delphi), PHP, C++, VB, scripting. I enjoy the XML power, both on client side and server side.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.141216.1 | Last Updated 31 Mar 2006
Article Copyright 2006 by Dan Radu
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid