/// <summary>
 ///     Constructor de la clase. Inicializa y valida los objetos con las tablas pasadas.
 /// </summary>
 /// <param name="oConnection">Objeto Conexión.</param>
 /// <param name="myColObjects">
 ///     Lista de objetos sobre los cuales se van a realizar las instrucciones DML, esto objetos deben ser pasado en el
 ///     orden en el que se
 ///     desea que actualicen a la base de datos.
 /// </param>
 internal ClsValidateObjects(ClsConnection oConnection, params Object[] myColObjects)
 {
     for (int i = 0; i < myColObjects.Length; i++)
     {
         this.oConnection = oConnection;
         this.myColObjects = new Dictionary<string, ClsObjectClass>();
         //Inicializamos las propiedades y los campos del objeto de la clase pasada. Al objeto dictionary le ponemos como clave principal en nombre de la tabla
         var myObjectClass = new ClsObjectClass(myColObjects[i]);
         this.myColObjects.Add(myObjectClass.STableName, myObjectClass);
         var myObjectTable = new Schema(myObjectClass.STableName, this.oConnection);
         myColTables = new Dictionary<string, Schema>();
         myColTables.Add(myObjectClass.STableName, myObjectTable);
         ColummnsValidate();
     }
 }
 /// <summary>
 ///     Inicializa sólo una tabla de la base de datos.
 /// </summary>
 /// <param name="sNameTable">Nombre de la tabla a inicializar.</param>
 /// <param name="oConection">Objeto que contiene la conexión a la base de datos.</param>
 internal Schema(String sNameTable, ClsConnection oConection)
 {
     _conection = oConection;
     if (_conection.Status() == ConnectionState.Closed)
     {
         _conection.DbOpen();
     }
     _nameTable = sNameTable;
     //Cargamos el esquema o la tabla.
     if (!string.IsNullOrWhiteSpace(_nameTable))
     {
         _tables = new List<Table> {LoadTable(sNameTable)};
     }
     else
         LoadSchema();
     _conection.DbClose();
 }
 /// <summary>
 ///     Inicializa el esquema de la base de datos.
 /// </summary>
 /// <param name="connection">Objeto que contiene la conexión a la base de datos.</param>
 internal Schema(ClsConnection connection)
     : this("", connection)
 {
 }
 /// <summary>
 ///     Constructor de la clase.
 /// </summary>
 /// <param name="oCon">Conexión de la base datos.</param>
 /// <param name="sNameTable">Nombre de la tabla para obtener el esquema.</param>
 public ClsStructure(ClsConnection oCon, String sNameTable)
 {
     this.oCon = oCon;
     LoadSchema(sNameTable);
 }
 /// <summary>
 ///     Inicializa las variables a nulo.
 /// </summary>
 private void ValueInitial()
 {
     sTableName = "";
     oColumns = null;
     oKeysColumns = null;
     dtTablaSelect = null;
     oCon = null;
     oSchemaStruct = null;
     sPrimaryKeys = null;
 }
 /// <summary>
 ///     Constructor de la clase.
 /// </summary>
 /// <param name="oCon">Conexión de la base datos.</param>
 public ClsStructure(ClsConnection oCon)
 {
     this.oCon = oCon;
     LoadSchema();
 }
        /// <summary>
        /// Ejecuta una sentencia SQL de selección (SELECT)
        /// </summary>
        /// <param name="oConnBD"> Instrucción SQL a ejecutar</param>
        /// <param name="sSQL">
        /// Indica si se produce un error, si debe motrar un mensaje o debe elevar el error al método o función desde el que 
        ///  fué llamada esta función.</param>
        /// <param name="ElevaError"></param>
        /// <returns>Devuelve un Datatable con el resultado de la SQL</returns>
        public DataTable SQLQuery(ClsConnection oConnBD, String sSQL, bool ElevaError)
        {
            DataTable oRes   = null;

            try{
                this.sSqlQuery = sSQL;

                oMiDataSet =oConnBD.InitDataAdapter(sSQL);
                oDataView = new DataView(MiDataTable);
                //CargaEstructura()

                this.oBindingSource = new BindingSource();
                this.oBindingSource.DataSource = MiDataView;

                oRes = MiDataTable;

            }catch(Exception ex)
            {
                if (ElevaError )
                    //eleva el error al método que llamó a esta función y el objeto exception original va en el InnerException
                    throw new Exception("Error al ejecutar la sentencia: " + sSQL, ex);
                else
                    System.Windows.Forms.MessageBox.Show("Error al ejecutar la sentencia: " + sSQL + (char)13,  ex.ToString());
            }

            return oRes;
        }
 /// <summary>
 ///     Constructor de la clase ClsExecuteQuery.
 /// </summary>
 /// <param name="oCon">Instancia al Objeto conexión de la base de datos.</param>
 public ClsExecuteQuery(ClsConnection oCon)
 {
     this.oCon = oCon;
 }