private void btnSearch_Click(object sender, EventArgs e)
        {
            String        query         = "";
            String        filter        = "";
            List <String> sqlParameters = new List <String>();
            List <String> sqlValues     = new List <String>();
            int           parameterId   = 0;

            foreach (SearchCriteria searchCriteria in searchSearchCriteriaLst.Items)
            {
                if (filter.Length != 0)
                {
                    filter += " AND ";
                }
                filter += searchCriteria.getQuery() + parameterId.ToString();
                sqlParameters.Add(searchCriteria.sqlParameter + parameterId.ToString());
                sqlValues.Add(searchCriteria.sqlValue);
                parameterId++;
            }

            if (filter.Length != 0)
            {
                searchResultList.Items.Clear();
                query = "SELECT "
                        + ColumnData.GetName(Net7.Table_item_base._id) + ","
                        + ColumnData.GetName(Net7.Table_item_base._name) + ","
                        + ColumnData.GetName(Net7.Table_item_base._category) + ","
                        + ColumnData.GetName(Net7.Table_item_base._sub_category) + ","
                        + ColumnData.GetName(Net7.Table_item_base._level) + ","
                        + ColumnData.GetName(Net7.Table_item_base._status)
                        + " FROM "
                        + Net7.Tables.item_base;
                if (m_table.Equals(Net7.Tables.item_base))
                {
                    query += DB.WHERE;
                }
                else
                {
                    query += "," + m_table
                             + DB.WHERE
                             + ColumnData.GetName(Net7.Table_item_base._id)
                             + DB.EQUALS
                             + m_primaryId
                             + " AND ";
                }
                query += filter;
                DataTable dataTable = DB.Instance.executeQuery(query, sqlParameters.ToArray(), sqlValues.ToArray());
                searchResultCount.Text = dataTable.Rows.Count.ToString() + " items";
                ListViewItem          listViewItem;
                Int32                 code;
                Items.ItemCategory    categoryValue;
                String                category;
                Items.ItemSubCategory subCategoryValue;
                String                subCategory;
                foreach (DataRow dataRow in dataTable.Rows)
                {
                    code             = ColumnData.GetInt32(dataRow, Net7.Table_item_base._category);
                    categoryValue    = (Items.ItemCategory)code;
                    category         = Items.CategoryLookup(categoryValue);
                    code             = ColumnData.GetInt32(dataRow, Net7.Table_item_base._sub_category);
                    subCategoryValue = (Items.ItemSubCategory)code;
                    subCategory      = Items.SubCategoryLookup(subCategoryValue);
                    listViewItem     = new ListViewItem(new String[]
                    {
                        ColumnData.GetString(dataRow, Net7.Table_item_base._id),
                        ColumnData.GetString(dataRow, Net7.Table_item_base._name),
                        category,
                        subCategory,
                        ColumnData.GetString(dataRow, Net7.Table_item_base._level),
                        ColumnData.GetString(dataRow, Net7.Table_item_base._status)
                    });
                    searchResultList.Items.Add(listViewItem);
                }
            }
        }
        public void configure(Net7.Tables table)
        {
            if (!m_table.Equals(table))
            {
                // Clear the previous search results
                guiSearchCriteriaTbl.Items.Clear();
                guiResultTbl.Items.Clear();
                guiResultLbl.Text = "";
            }

            m_table = table;
            ColumnData.ColumnDataInfo[] fields = null;
            switch (m_table)
            {
            case Net7.Tables.effects:
                m_columns = new Enum[] { Net7.Table_effects._effect_id, Net7.Table_effects._description, Net7.Table_effects._base_asset_id };
                fields    = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_effects>(true);
                break;

            case Net7.Tables.factions:
                m_columns = new Enum[] { Net7.Table_factions._faction_id, Net7.Table_factions._name };
                fields    = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_factions>(true);
                break;

            case Net7.Tables.item_base:
                m_columns = new Enum[] { Net7.Table_item_base._id,
                                         Net7.Table_item_base._name,
                                         Net7.Table_item_base._category,
                                         Net7.Table_item_base._sub_category,
                                         Net7.Table_item_base._level,
                                         Net7.Table_item_base._status };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_item_base>(true);
                break;

            case Net7.Tables.missions:
                m_columns = new Enum[] { Net7.Table_missions._mission_id,
                                         Net7.Table_missions._mission_name,
                                         Net7.Table_missions._mission_type,
                                         Net7.Table_missions._mission_key };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_missions>(true);
                break;

            case Net7.Tables.mob_base:
                m_columns = new Enum[] { Net7.Table_mob_base._mob_id,
                                         Net7.Table_mob_base._name };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_mob_base>(true);
                break;

            case Net7.Tables.starbase_npcs:
                m_columns = new Enum[] { Net7.Table_starbase_npcs._npc_Id,
                                         Net7.Table_starbase_npcs._first_name,
                                         Net7.Table_starbase_npcs._last_name };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_starbase_npcs>(true);
                break;

            case Net7.Tables.sectors:
                m_columns = new Enum[] { Net7.Table_sectors._sector_id,
                                         Net7.Table_sectors._name };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_sectors>(true);
                break;

            case Net7.Tables.sector_objects:
                m_columns = new Enum[] { Net7.Table_sector_objects._sector_object_id,
                                         Net7.Table_sector_objects._name,
                                         Net7.Table_sector_objects._base_asset_id,
                                         Net7.Table_sector_objects._sector_id };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_sector_objects>(true);
                break;

            case Net7.Tables.skills:
                m_columns = new Enum[] { Net7.Table_skills._skill_id,
                                         Net7.Table_skills._name };
                fields = CommonTools.Enumeration.ToColumnDataInfo <Net7.Table_skills>(true);
                break;

            default:
                throw (new Exception("DlgSearch.configure() does not handle the table " + table.ToString()));
            }

            guiResultTbl.Columns.Clear();
            m_adjustedColumnWidths = false;

            ColumnHeader columnHeader;

            for (int columnIndex = 0; columnIndex < m_columns.Length; columnIndex++)
            {
                columnHeader = new ColumnHeader();
                columnHeader.DisplayIndex = columnIndex;
                columnHeader.Text         = ColumnData.GetName(m_columns[columnIndex]);
                columnHeader.Width        = -2;
                guiResultTbl.Columns.Add(columnHeader);
            }

            m_dlgSearchCriteria = new DlgSearchCriteria();
            m_dlgSearchCriteria.configure(fields);
        }