/// <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 DataTableFactoresFromDataBase(ObjetoActualizacionFactores a) { DataTable data = new DataTable(a.Nombre.ToString()); foreach (string header in a.Headers) { data.Columns.Add(header); } Invoke(new Action <string>(EnviarMensaje), "Actualizando factores " + 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> /// actualiza desde BD los factores de desvación de probabilidad de escenarios /// Acción desencadenada al hacer click en botton Actualizar en tabpage factores escenarios /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ActualizarFactores(object sender, EventArgs e) { if (_connection.State == ConnectionState.Open) { this.Cursor = Cursors.WaitCursor; DateTime ini = DateTime.Now; if (objectListView2.CheckedObjects != null) { foreach (object o in objectListView2.CheckedObjects) { ObjetoActualizacionFactores a = (ObjetoActualizacionFactores)o; AgregarTableFactores(a); } CargarDataTableEnVisorFactores(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> /// Agrega un DaTaTable al DataSet de factores con información desde BD /// </summary> /// <param name="a"></param> private void AgregarTableFactores(ObjetoActualizacionFactores a) { if (_factores_actualizados.Tables.Contains(a.Nombre.ToString())) { _factores_actualizados.Tables.Remove(a.Nombre.ToString()); } _factores_actualizados.Tables.Add(DataTableFactoresFromDataBase(a)); }
/// <summary> /// Quita las tablas chequeadas /// Acción ejecutada al hacer click sobre el botón Limpiar en tabpage factores escenarios /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LimpiarChecksFactores(object sender, EventArgs e) { if (objectListView2.CheckedObjects != null) { foreach (object o in objectListView2.CheckedObjects) { ObjetoActualizacionFactores a = (ObjetoActualizacionFactores)o; if (_factores_actualizados.Tables.Contains(a.Nombre.ToString())) { _factores_actualizados.Tables.Remove(a.Nombre.ToString()); } } } CargarDataTableEnVisorFactores(null, new EventArgs()); }
/// <summary> /// Carga un factor de BD seleccionado en el DataListView de factores /// Acción desencadenada al hacer click una de los factores del OLV factores /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CargarDataTableEnVisorFactores(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; this.dataListView1.Visible = true; if (objectListView2.GetSelectedObject() != null) { ObjetoActualizacionFactores a = (ObjetoActualizacionFactores)objectListView2.GetSelectedObject(); ConfigurarDataObjectList(dataListView1, 1, a.Headers); if (_factores_actualizados.Tables.Contains(a.Nombre.ToString())) { dataListView1.DataSource = _factores_actualizados.Tables[a.Nombre.ToString()]; } dataListView1.Refresh(); } this.Cursor = Cursors.Default; }
/// <summary> /// Carga ascpectGetters y ascpectPutters en OLV factores /// </summary> private void SetDelegatesOLVFactores() { objectListView2.AllColumns[0].AspectGetter = delegate(object o) { ObjetoActualizacionFactores aux = (ObjetoActualizacionFactores)o; return(aux.Nombre); }; objectListView2.AllColumns[1].AspectGetter = delegate(object o) { ObjetoActualizacionFactores aux = (ObjetoActualizacionFactores)o; return(aux.AgnoIni); }; objectListView2.AllColumns[1].AspectPutter = delegate(object goal, object value) { ObjetoActualizacionFactores aux = (ObjetoActualizacionFactores)goal; int valor = Utilidades.EsEnteroPositivo(value.ToString()) ? ((int)value) : aux.AgnoIni; aux.AgnoIni = (valor >= 2000 && valor <= DateTime.Now.Year) ? valor : aux.AgnoIni; }; }