Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Simple Query Tool to Extract Data from Database

4.24/5 (14 votes)
9 Oct 2008CPOL1 min read 1   1.7K  
This is a simple user friendly query tool which helps end-users to extract data from the database. The UI looks similar to query windows in Team Foundation Server, this is a modest beginning which can be enhanced and used more effectively.
QueryTool_V1

Introduction

The are various ways to design a UI that helps users to extract specific information from the database. This tool whose UI design is similar to the queries windows in TFS helps users to extract specific data by helping the user to create or form a query.

Background

This idea is similar to the query tools available in SQL server and TFS, but it is customized to the user's needs.

Using the Code

The Query tool hosts various controls in the grid, which get added on the fly while the user clicks through each of the cells, but still makes sure the user doesn't end up creating a garbled query.

Event based Asynchronous programming is done in case the query execution turnaround time is more, so for good user experience a progress bar is added to show the user that the query is been processed.

Interesting articles would be the following ones from MSDN:

  1. How to: Host Controls in Windows Forms DataGridView Cells

    This tools hosts Calender, ComboBox and Treeview controls in a ComboBox.

    QueryTool_V1_Pic3.Jpg

    QueryTool_V1_Pic4.Jpg

  2. How to: Wrap a Windows Forms Control with ToolStripControlHost

  3. Safe, Simple Multithreading in Windows Forms

    C#
    //
    // Hosting the Controls in the Grid View
    //
    public class CalendarColumn : DataGridViewColumn
    {
      
    }
    public class CalendarCell : DataGridViewTextBoxCell
    {      
    }
    class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
    {
    }
    
    //
    // Asynchronous Programming to Update the UI
    //
    class ShowProgressDelegate : MulticastDelegate {
      public void Invoke(int digits);
      public void BeginInvoke(string txtDisplay, AsyncCallback callback,
                              object asyncState);
      public void EndInvoke(IAsyncResult result);
    }
    
    public class ToolStripControlHost : ToolStripItem 

Points of Interest

While developing the tool, it helped me in learning the various properties of control, hosting those controls in the grid view and do asynchronous programming.

History

  • 10th October, 2008: Initial release

This is just a fast track beginning, the future release would include all the fixes and an additional feature to group the clause.

License

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