/// <summary>
        /// Default constructor
        /// </summary>
        /// <param name="Connection">Database connection</param>
        public OleDataSet(OleDatabaseConnection Connection)
        {
            m_Connection = Connection;

            m_DataSet = null;

            m_TCase     = null;
            m_TOS       = null;
            m_TPriority = null;
            m_TState    = null;
            m_TType     = null;
            m_TUsers    = null;

            m_TraceSwitch = new TraceSwitch("OleDataSetTrace", "OLE DataSet operations trace.");
        }
        /// <summary>
        /// Connect to Database
        /// </summary>
        /// <returns>True if success, otherwise false</returns>
        public bool Connect()
        {
            // Trace begin function message
            if (m_TraceSwitch.TraceInfo)
            {
                TraceLog.Write("OleDataSet",
                               "Connect",
                               "Begin function",
                               "",
                               TraceLog.TraceMsgLevel.Message,
                               m_TraceSwitch);
            }

            // Check if connection is valid
            if (m_Connection == null)
            {
                // Trace warning message
                if (m_TraceSwitch.TraceWarning)
                {
                    TraceLog.Write("OleDataSet",
                                   "Connect",
                                   "m_Connection is null. Function exit before end with false parameter",
                                   "",
                                   TraceLog.TraceMsgLevel.Warning,
                                   m_TraceSwitch);
                }

                return(false);
            }

            try
            {
                // Construct data object containers
                m_DataSet   = new DataSet();
                m_TCase     = new Table_TCase(m_Connection);
                m_TOS       = new Table_TOperatingSystems(m_Connection);
                m_TPriority = new Table_TPriority(m_Connection);
                m_TState    = new Table_TState(m_Connection);
                m_TType     = new Table_TType(m_Connection);
                m_TUsers    = new Table_TUsers(m_Connection);

                // Attempt to connect to T_Case table
                if (m_TCase.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TCase connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Attempt to connect to T_OperatingSystems table
                if (m_TOS.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TOS connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Attempt to connect to T_Priority table
                if (m_TPriority.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TPriority connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Attempt to connect to T_State table
                if (m_TState.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TState connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Attempt to connect to T_Type table
                if (m_TType.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TType connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Attempt to connect to T_Users table
                if (m_TUsers.Connect() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "m_TUsers connection failed",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TCase table
                if (m_TCase.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TCase table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TOS table
                if (m_TOS.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TOS table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TPriority table
                if (m_TPriority.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TPriority table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TState table
                if (m_TState.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TState table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TType table
                if (m_TType.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TType table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Get TUsers table
                if (m_TUsers.GetTable() == false)
                {
                    // Trace warning message
                    if (m_TraceSwitch.TraceWarning)
                    {
                        TraceLog.Write("OleDataSet",
                                       "Connect",
                                       "Cannot get m_TUsers table",
                                       "",
                                       TraceLog.TraceMsgLevel.Warning,
                                       m_TraceSwitch);
                    }

                    return(false);
                }

                // Fill DataSet
                m_DataSet.Tables.Add(m_TCase.Table);
                m_DataSet.Tables.Add(m_TOS.Table);
                m_DataSet.Tables.Add(m_TPriority.Table);
                m_DataSet.Tables.Add(m_TState.Table);
                m_DataSet.Tables.Add(m_TType.Table);
                m_DataSet.Tables.Add(m_TUsers.Table);

                // Create unique constraints for each tables
                m_DataSet.Tables[0].Columns[0].Unique = true;
                m_DataSet.Tables[1].Columns[0].Unique = true;
                m_DataSet.Tables[2].Columns[0].Unique = true;
                m_DataSet.Tables[3].Columns[0].Unique = true;
                m_DataSet.Tables[4].Columns[0].Unique = true;
                m_DataSet.Tables[5].Columns[0].Unique = true;

                // Add foreign key constraint to link Priority tables
                ForeignKeyConstraint PriorityConstraint =
                    new ForeignKeyConstraint(m_DataSet.Tables[2].Columns["PriorityID"],
                                             m_DataSet.Tables[0].Columns["Priority"]);

                m_DataSet.Tables[0].Constraints.Add(PriorityConstraint);

                // Add foreign key constraint to link State tables
                ForeignKeyConstraint StateConstraint =
                    new ForeignKeyConstraint(m_DataSet.Tables[3].Columns["StateID"],
                                             m_DataSet.Tables[0].Columns["State"]);

                m_DataSet.Tables[0].Constraints.Add(StateConstraint);

                // Add foreign key constraint to link Type tables
                ForeignKeyConstraint TypeConstraint =
                    new ForeignKeyConstraint(m_DataSet.Tables[4].Columns["TypeID"],
                                             m_DataSet.Tables[0].Columns["Type"]);

                m_DataSet.Tables[0].Constraints.Add(TypeConstraint);

                // Add foreign key constraint to link User tables
                ForeignKeyConstraint UserConstraint =
                    new ForeignKeyConstraint(m_DataSet.Tables[5].Columns["UserID"],
                                             m_DataSet.Tables[0].Columns["User"]);

                m_DataSet.Tables[0].Constraints.Add(UserConstraint);

                return(true);
            }
            catch (Exception ex)
            {
                // Trace error message
                if (m_TraceSwitch.TraceError)
                {
                    TraceLog.Write("OleDataSet",
                                   "Connect",
                                   "DataSet connection failed. Cause : " + ex.Message,
                                   ex.Source,
                                   TraceLog.TraceMsgLevel.Error,
                                   m_TraceSwitch);
                }

                return(false);
            }
            finally
            {
                // Trace end function message
                if (m_TraceSwitch.TraceInfo)
                {
                    TraceLog.Write("OleDataSet",
                                   "Connect",
                                   "End function",
                                   "",
                                   TraceLog.TraceMsgLevel.Message,
                                   m_TraceSwitch);
                }
            }
        }