///******************************************************************************************************* /// <summary> /// Manejador del evento CellContentClick del Grid tablas: verifica si se hizo clic en un control /// dentro de la celda /// </summary> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>21-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* private void Grd_Tablas_CellContentClick(object sender, DataGridViewCellEventArgs e) { int.TryParse(((DataGridView)sender).CurrentCell.Value.ToString(), out Valor_Original); try { Edicion = true; // validar que la celda sea de tipo DataGridViewButtonCell (contiene un botón) if (Grd_Tablas.CurrentCell.GetType().Equals(typeof(DataGridViewButtonCell))) { // si el texto en el botón es Vacias, intentar realizar la operación if (Grd_Tablas.Columns[e.ColumnIndex].Name == "Vaciar") { // si el usuario confirma el borrado de la información, llamar al método correspondiente if (MessageBox.Show("¿Confirma que desea vaciar la información de la tabla?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { string Nombre_Tabla = Grd_Tablas.CurrentRow.Cells["Nombre"].Value.ToString(); Cls_Tablas_Negocio Tablas = new Cls_Tablas_Negocio(); Tablas.Vaciar_Bitacora(Nombre_Tabla); // mostrar mensaje de operación exitosa MessageBox.Show("La Bitácora btc_" + Nombre_Tabla + " ha sido vaciada", "Éxito", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } Grd_Tablas.EndEdit(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
///******************************************************************************************************* /// <summary> /// Manejador del evento Load para el formulario: Cargar el listado de usuarios del sistema en el combo /// </summary> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>22-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* private void Frm_Rep_Log_Load(object sender, EventArgs e) { try { // consultar la lista de usuario activos Cls_Apl_Usuarios_Negocio Neg_Usuario = new Cls_Apl_Usuarios_Negocio(); Neg_Usuario.P_Estatus = "ACTIVO"; Cmb_Usuario.ValueMember = Apl_Usuarios.Campo_Nombre_Usuario; Cmb_Usuario.DisplayMember = Apl_Usuarios.Campo_Nombre_Usuario; DataTable Dt_Usuarios = Neg_Usuario.Consultar_Usuario(); // si la consulta regresó resultados, agregar una fila vacía if (Dt_Usuarios != null && Dt_Usuarios.Rows.Count > 0) { DataRow Dr = Dt_Usuarios.NewRow(); Dr[Apl_Usuarios.Campo_Nombre_Usuario] = ""; Dt_Usuarios.Rows.InsertAt(Dr, 0); } // asignar la fuente de datos Cmb_Usuario.DataSource = Dt_Usuarios; // consultar la lista de tablas en la base de datos que tienen log Cls_Tablas_Negocio Neg_Tablas = new Cls_Tablas_Negocio(); DataTable Dt_Tablas = Neg_Tablas.Listar_Tablas_Con_Log(); Cmb_Tabla.DisplayMember = "table_name"; Cmb_Tabla.DataSource = Dt_Tablas; } catch { } }
///******************************************************************************************************* /// <summary> /// Manejador del evento Load del formulario: carga del listado de tablas en la base de datos /// </summary> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>21-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* private void Frm_Apl_Bitacora_Load(object sender, EventArgs e) { try { Cls_Tablas_Negocio Tablas = new Cls_Tablas_Negocio(); Grd_Tablas.DataSource = Tablas.Listar_Tablas(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
///******************************************************************************************************* /// <summary> /// Consulta el log de eventos para una tabla y regresa un datatable con el resultado /// </summary> /// <param name="Neg_Tablas">Instancia de la clase de negocio con los filtros para la consulta</param> /// <returns>una tabla con el resultado de la consulta</returns> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>22-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* public static DataTable Consultar_Bitacora(Cls_Tablas_Negocio Neg_Tablas) { try { DataTable Dt_Log = null; string Mi_Sql; Conexion.Iniciar_Helper(); Conexion.HelperGenerico.Conexion_y_Apertura(); // formar consulta Mi_Sql = "SELECT * FROM btc_" + Neg_Tablas.P_Nombre_Tabla + " WHERE 1=1"; // validar filtros opcionales if (!string.IsNullOrEmpty(Neg_Tablas.P_Operacion)) { Mi_Sql += " AND Operacion = '" + Neg_Tablas.P_Operacion + "'"; } if (!string.IsNullOrEmpty(Neg_Tablas.P_Usuario)) { Mi_Sql += " AND (usuario_creo = '" + Neg_Tablas.P_Usuario + "' OR usuario_modifico = '" + Neg_Tablas.P_Usuario + "')"; } // agregar filtros opcionales de fecha if (Neg_Tablas.P_Fecha_Inicio != DateTime.MinValue) { Mi_Sql += " AND cast(btc_fecha_reg as date) >=" + Cls_Ayudante_Sintaxis.Insertar_Fecha(Neg_Tablas.P_Fecha_Inicio); } if (Neg_Tablas.P_Fecha_Final != DateTime.MinValue) { Mi_Sql += " AND cast(btc_fecha_reg as date) <=" + Cls_Ayudante_Sintaxis.Insertar_Fecha(Neg_Tablas.P_Fecha_Final); } // ejecutar la consulta Dt_Log = Conexion.HelperGenerico.Obtener_Data_Table(Mi_Sql); return(Dt_Log); } catch (Exception e) { throw new Exception("Respaldar_Bitacora : " + e.Message); } finally { Conexion.HelperGenerico.Cerrar_Conexion(); } }
///******************************************************************************************************* /// <summary> /// Obtiene un listado de registros del log y lo carga en el grid resultado /// </summary> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>22-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* private void Consulta_Log() { try { Cls_Tablas_Negocio Neg_Tablas = new Cls_Tablas_Negocio(); Neg_Tablas.P_Nombre_Tabla = Cmb_Tabla.Text; // si hay un tipo de operación seleccionada, asignar if (Cmb_Operacion.SelectedIndex > 0) { Neg_Tablas.P_Operacion = Cmb_Operacion.Text; } // si hay un usuario seleccionado, asignar if (Cmb_Usuario.SelectedIndex > 0) { Neg_Tablas.P_Usuario = Cmb_Usuario.Text; } // validar selección de fecha inicial if (true == Dtp_Fecha_Inicio.Checked) { Neg_Tablas.P_Fecha_Inicio = Dtp_Fecha_Inicio.Value; } // validar selección de fecha final if (true == Dtp_Fecha_Termino.Checked) { Neg_Tablas.P_Fecha_Final = Dtp_Fecha_Termino.Value; } DataTable Dt_Resultado = Neg_Tablas.Consultar_Bitacora(); // si la primera columna es el id de bitácora, quitarlo if (Dt_Resultado != null && Dt_Resultado.Columns.Count > 0 && Dt_Resultado.Columns[0].ColumnName.StartsWith("btc_")) { Dt_Resultado.Columns.RemoveAt(0); } Grd_Resultado.DataSource = Dt_Resultado; } catch (Exception Ex) { throw new Exception("[Consulta_Log]: " + Ex.Message); } }
///******************************************************************************************************* /// <summary> /// Manejador del evento CellEndEdit del Grid tablas: valida las operaciones en los checkbox /// </summary> /// <creo>Roberto González Oseguera</creo> /// <fecha_creo>21-may-2014</fecha_creo> /// <modifico></modifico> /// <fecha_modifico></fecha_modifico> /// <causa_modificacion></causa_modificacion> ///******************************************************************************************************* private void Grd_Tablas_CellEndEdit(object sender, DataGridViewCellEventArgs e) { var Check_Box_Servicio = ((DataGridView)sender)["Log", e.RowIndex] as DataGridViewCheckBoxCell; var Check_Box_Bitacora = ((DataGridView)sender)["Bitacora", e.RowIndex] as DataGridViewCheckBoxCell; string Tabla = ((DataGridView)sender).CurrentRow.Cells["Nombre"].Value.ToString(); try { // validar la bandera Edicion if (true == Edicion) { Cls_Tablas_Negocio Tablas = new Cls_Tablas_Negocio(); // realizar operación de acuerdo con el nombre de la columna seleccionada switch (Grd_Tablas.Columns[e.ColumnIndex].Name) { case "Bitacora": // validar que la tabla no sea bitácora if (Tabla.StartsWith("btc_")) { MessageBox.Show("No se puede crear bitácora para esta tabla.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Check_Box_Bitacora.Value = 0; break; } // si se activó el checkbox bitácora, crearla y mostrar mensaje if (Convert.ToInt16(Check_Box_Bitacora.Value) == 1) { Tablas.Crear_Bitacora(Tabla); MessageBox.Show("La Bitácora btc_" + Tabla + " ha sido creada.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { // si no hay un Log activo para esta tabla, llamar al método que elimina la bitácora y mostrar mensaje if (Convert.ToInt16(Check_Box_Servicio.Value) == 0) { Tablas.Eliminar_Bitacora(Tabla); MessageBox.Show("La Bitácora btc_" + Tabla + " ha sido eliminada.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } else // mostrar mensaje indicando que no se puede eliminar la bitácora porque el Log está activado { MessageBox.Show("No se puede eliminar la bitácora debido que tiene activado el Log.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Check_Box_Bitacora.Value = 1; } } break; case "Log": // si se activó el checkbox, intentar crear el Log if (Convert.ToInt16(Check_Box_Servicio.Value) == 1) { // validar que haya una bitácora antes de crear el Log if ((Int64)Check_Box_Bitacora.Value == 1) { Tablas.Crear_Servicio(Tabla); MessageBox.Show("El Log para la tabla " + Tabla + " ha sido creado.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("No se puede crear el Log debido a que no tiene bitácora creada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Check_Box_Servicio.Value = 0; } } else { Tablas.Eliminar_Servicio(Tabla); MessageBox.Show("El Log para la tabla " + Tabla + " ha sido eliminado.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; } } } catch (Exception ex) { // en caso de error, regresar el checkbox a su valor anterior y mostrar mensaje de error ((DataGridView)sender).CurrentCell.Value = Valor_Original; MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }