/// <summary>
 /// Carga ascpectGetters y ascpectPutters en OLV Curvas
 /// </summary>
 private void SetDelegatesOLVCurvas()
 {
     objectListView1.AllColumns[0].AspectGetter = delegate(object o)
     {
         ObjetoActualizacionCurvas aux = (ObjetoActualizacionCurvas)o;
         return(aux.Nombre);
     };
     objectListView1.AllColumns[1].AspectGetter = delegate(object o)
     {
         ObjetoActualizacionCurvas aux = (ObjetoActualizacionCurvas)o;
         return(aux.AgnoIni);
     };
     objectListView1.AllColumns[2].AspectGetter = delegate(object o)
     {
         ObjetoActualizacionCurvas aux = (ObjetoActualizacionCurvas)o;
         return(aux.Periodos);
     };
     objectListView1.AllColumns[1].AspectPutter = delegate(object goal, object value)
     {
         ObjetoActualizacionCurvas aux = (ObjetoActualizacionCurvas)goal;
         int valor = Utilidades.EsEnteroPositivo(value.ToString()) ? ((int)value) : aux.AgnoIni;
         aux.AgnoIni = (valor >= 2000 && valor <= DateTime.Now.Year) ? valor : aux.AgnoIni;
     };
     objectListView1.AllColumns[2].AspectPutter = delegate(object goal, object value)
     {
         ObjetoActualizacionCurvas aux = (ObjetoActualizacionCurvas)goal;
         int valor = Utilidades.EsEnteroPositivo(value.ToString()) ? ((int)value) : aux.Periodos;
         aux.Periodos = ((valor == 1) || (valor == 2) || (valor == 3) || (valor == 4) || (valor == 6) || (valor == 8) || (valor == 12) || (valor == 24)) ? valor : aux.Periodos;
     };
 }
 /// <summary>
 /// Actualiza desde BD las curvas de disrupciones
 /// Acción desencadenada al hacer click en botton Actualizar en tabpage curvas
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ActualizarCurvas(object sender, EventArgs e)
 {
     if (_connection.State == ConnectionState.Open)
     {
         this.Cursor = Cursors.WaitCursor;
         DateTime ini = DateTime.Now;
         if (objectListView1.CheckedObjects != null)
         {
             foreach (object o in objectListView1.CheckedObjects)
             {
                 ObjetoActualizacionCurvas a = (ObjetoActualizacionCurvas)o;
                 AgregarTableCurvas(a);
             }
             CargarDataTableEnVisorCurvas(null, new EventArgs());
         }
         DateTime termino  = DateTime.Now;
         int      duracion = Convert.ToInt16((termino - ini).TotalSeconds);
         EnviarMensaje("Actualización terminada en " + duracion + " segundos.");
         this.Cursor = Cursors.Default;
     }
     else
     {
         EnviarMensaje("Error en la conexión a la base de datos.");
     }
 }
        /// <summary>
        /// Ejecuta una consulta para obtener las curvas y carga un DataTable con los resultados
        /// </summary>
        /// <param name="a">Objeto con la consulta</param>
        /// <returns></returns>
        private DataTable DataTableCurvasFromDataBase(ObjetoActualizacionCurvas a)
        {
            DataTable data = new DataTable(a.Nombre);

            foreach (string header in a.Headers)
            {
                data.Columns.Add(header);
            }
            Invoke(new Action <string>(EnviarMensaje), "Actualizando curvas " + a.Nombre);
            SqlCommand command = new SqlCommand(a.Query, _connection);

            command.CommandTimeout = 300;
            SqlDataReader r = command.ExecuteReader();

            while (r.Read())
            {
                object[] o = new object[r.FieldCount];
                for (int i = 0; i < r.FieldCount; i++)
                {
                    o[i] = r[i];
                }
                data.Rows.Add(o);
            }
            r.Close();
            return(data);
        }
 /// <summary>
 /// Carga el ObjectListView de curvas
 /// </summary>
 private void CargarOLVCurvas()
 {
     foreach (TipoDisrupcion tipo in Enum.GetValues(typeof(TipoDisrupcion)))
     {
         if (_main._modeloDisrupcionesBase != null && _main._modeloDisrupcionesBase.ColeccionDisrupciones != null && _main._modeloDisrupcionesBase.ColeccionDisrupciones.Count > 0 && _main._modeloDisrupcionesBase.ColeccionDisrupciones.ContainsKey(tipo.ToString()))
         {
             InfoDisrupcion            info = _main._modeloDisrupcionesBase.ColeccionDisrupciones[tipo.ToString()];
             ObjetoActualizacionCurvas o    = new ObjetoActualizacionCurvas(tipo.ToString(), info.Dimension, info.Headers, DateTime.Now.Year - 5, GetPeriodos(tipo), GetFuncion(tipo));
             objectListView1.AddObject(o);
         }
         if (objectListView1.Objects != null)
         {
             bool primero = true;
             foreach (object o in objectListView1.Objects)
             {
                 objectListView1.CheckObject(o);
                 if (primero)
                 {
                     primero = false;
                     objectListView1.SelectObject(o);
                 }
             }
         }
     }
 }
 /// <summary>
 /// Agrega un DaTaTable al DataSet de curvas con información desde BD
 /// </summary>
 /// <param name="a"></param>
 private void AgregarTableCurvas(ObjetoActualizacionCurvas a)
 {
     if (_curvas_actualizadas.Tables.Contains(a.Nombre))
     {
         _curvas_actualizadas.Tables.Remove(a.Nombre);
     }
     _curvas_actualizadas.Tables.Add(DataTableCurvasFromDataBase(a));
 }
 /// <summary>
 /// Quita las tablas chequeadas
 /// Acción ejecutada al hacer click sobre el botón Limpiar en tabpage Curvas
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void LimpiarChecksCurvas(object sender, EventArgs e)
 {
     if (objectListView1.CheckedObjects != null)
     {
         foreach (object o in objectListView1.CheckedObjects)
         {
             ObjetoActualizacionCurvas a = (ObjetoActualizacionCurvas)o;
             if (_curvas_actualizadas.Tables.Contains(a.Nombre))
             {
                 _curvas_actualizadas.Tables.Remove(a.Nombre);
             }
         }
     }
     CargarDataTableEnVisorCurvas(null, new EventArgs());
 }
 /// <summary>
 /// Carga una curva de BD seleccionada en el DataListView de curvas
 /// Acción desencadenada al hacer click una de las curvas del OLV curvas
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void CargarDataTableEnVisorCurvas(object sender, EventArgs e)
 {
     this.Cursor = Cursors.WaitCursor;
     this.dataListView_curvas.Visible = true;
     if (objectListView1.GetSelectedObject() != null)
     {
         ObjetoActualizacionCurvas a = (ObjetoActualizacionCurvas)objectListView1.GetSelectedObject();
         ConfigurarDataObjectList(dataListView_curvas, a.Dimension, a.Headers);
         if (_curvas_actualizadas.Tables.Contains(a.Nombre))
         {
             dataListView_curvas.DataSource = _curvas_actualizadas.Tables[a.Nombre];
         }
         dataListView_curvas.Refresh();
     }
     this.Cursor = Cursors.Default;
 }