public void Inicializar(Admin oAdmin) { _Campo = ""; _oAdmin = oAdmin; _oAdmin.FiltroCampos = oAdmin.FiltroCampos != null?oAdmin.FiltroCampos:""; _oAdmin.FiltroValores = oAdmin.FiltroValores != null?oAdmin.FiltroValores:""; _oAdmin.FiltroOperador = oAdmin.FiltroOperador != null ? oAdmin.FiltroOperador : ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); _dtComboA = new DataTable(); _dtComboA.Columns.Add("DctColumna", typeof(string)); _dtComboA.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(oAdmin.TabCodigo); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); _dtComboA.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _oAdmin.FiltroCampos = _oAdmin.FiltroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _oAdmin.FiltroValores = _oAdmin.FiltroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _oAdmin.FiltroCampos = _oAdmin.FiltroCampos + oDetalle.DctColumna + "&"; _oAdmin.FiltroValores = _oAdmin.FiltroValores + _vista.comboEstado.Text + "&"; } } oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion", "SELECCIONE.."); InicializarTabAvanzado(); if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } TablasBus oTablasBus = new TablasBus(); DataTable dt = new DataTable(); dt = oTablasBus.TablasBusquedaGetAllFilter(_Campo, _oAdmin); _vista.cantidad = "Se encontraron " + oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; _vista.grilla.Columns["CODIGO"].Visible = false; }
public void Inicializar(string tabla) { _filtroCampos = ""; _filtroValores = ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.comboEstado.Text + "&"; } } if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); _vista.cantidad = "Se encontraron " + oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; }
public void CargarGrilla(Controles.datos.grdGrillaAdmin grilla, string tabla, string camposFiltro, string valoresFiltro) { string _Campo = ""; DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; } if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, camposFiltro, valoresFiltro); oUtil.CargarGrilla(grilla, dt); grilla.Columns["CODIGO"].Visible = false; }
//PRIMER METODO EN EJECUTARCE AL CREARCE EL FORMULARIO //ENCARGADO DE ADAPTAR LA GRILLA PARA CONTENER TODO TIPO DE TABLAS public void Inicializar(string tabla, bool claveSecuencia) { Tabla = tabla; ClaveSecuencia = claveSecuencia; _filtroCampos = ""; _filtroValores = ""; _Campo = ""; _Checks = ""; _Combos = ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); /* * SE RECUPERA LAS COLUMAS DE LA TABLA QUE SE VA A CARGAR * DETALLES COLUMNAS TABLAS TRAE MUCHA INFORMACION * DE LOS CAMPOS DE LA BASE DE DATOS Y DE LAS TABLAS * A TRABAJAR, CONTROLAR BIEN CUALES SON ESOS DATOS, * Y INDICAR PARA QUE SIRVE CADA CAMPO, COMO VA A MODIFICAR LA EJECUCION DEL PROGRAMA? */ ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); /* DE LAS COLUMAS QUE SE RECUPERAN DE LA BD, SE CONTROLA QUE TIPO DE CONTROL ES * EN EL CASO DE SER COMBO O CHECK * * NO SE QUE SE HACE CON LAS VARIABLES _Combos y _Check * TAMBIEN SE HACE LA CARGA DE LA QUERY QUE LUEGO BUSCARA LOS DATOS */ foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctNroOrden == 1) { // ESTO ES PARA PODER GUARDAR EL NOMBRE DE LA COLUMNA ColumnaClave = oDetalle.DctDescripcion; } //ACA SE PUEDEN CARGAR MAS CONTROLES PARA DARLE VERSATILIDAD A LA GRILLA switch (oDetalle.DctTipoControl) { // ESTO ESTOY MUY SEGURO QUE SE PUEDE OMITIR TOTAL MENTE...... case "COMBO": { _Combos += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; break; } case "CHECK": { _Checks += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; break; } } _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.comboEstado.Text + "&"; } } //FIN DEL FOREACH /* * HASTA ACA SE ENCARGO DE PREPARAR LOS DATOS PARA DESPUES CARGAR LA GRILLA */ //SE CARGA EL COMBO DE BUSQUEDA oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion"); if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } /* * ACA HACE LA BUSQUEDA EN LA BASE DE DATOS */ TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); //CARGAR GRILLA _vista.grilla.AutoGenerateColumns = false; _vista.cantidad = oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; //SUBRUTINA ENCARGADA DE QUE LA GRILLA TENGA LAS COLUMNAS DEL TIPO NECESARIA generarDT(ListDetalle); //SUBRUTINA QUE ENLAZA LOS DATOS RECUPERADOS CON LA GRILLA YA PREPARADA vincularDT(_vista.grilla); //LA ULTIMA COLUMNA ES EL CONTROL PARA SABER SI LA FILA FUE CREADA, MODIFICADA O ELIMINADA _vista.grilla.Columns.Add("ALTERADO", ""); _vista.grilla.Columns["ALTERADO"].Visible = false; if (claveSecuencia) { _vista.grilla.Columns[ColumnaClave].ReadOnly = true; } //ESTE METODO SE UTILIZARA PARA ACOMODAR LAS COLUMNAS, CELDAS O CUALQUEIR OTRA PROPIEDAD VISUAL //DE LA GRILLA, ORIENTADA A PERSONALIZAR MAS LA GRILLA DEPENDIENDO LA TABLA QUE SE LE PIDA // TRABAJAR presonalizarGrilla(_vista.grilla, tabla); //SETEA TODAS LAS ROWS EN ESTADO SIN MODIFICACION foreach (DataGridViewRow row in _vista.grilla.Rows) { if (!row.IsNewRow) { row.Cells["ALTERADO"].Value = "0"; } } // Obtengo nombre de la tabla Tablas otabla = new Tablas(); otabla = oTablasBus.TablasGetById(tabla); // Obtengo la estructura de la tabla con la que cargue la grilla //LA ESTRUCTURA SE ENCARGA DESPUES DE AYUDAR A PASAR LOS VALORES A LA CLASE BISSNES DE TABLAS PARA REALIZAR LOS CAMBIOS EN LA BASE DE DATOS _estructuraTablaGrilla = oTablasBus.Estructura(otabla.TabNombre); // Si la clave es secuencia no permito editarla, caso contrario si // La clave se edita unicamente cuando se agrega un nuevo registro, esto se habilita en addnew // cuando doy confirmar cambios se debe validar cada uno de los campos teniendo en cuenta los tipos de datos de la tabla y el mapeo }
//ESTE METODO SE ENCARGA DE IMPACTAR LOS NUEVOS CAMBIOS A LA BASE DE DATOS public void ActualizaTabla(string Tabla, string campoClave, bool claveSecuencia) { // Obtener de DetallesColumnasTablas todos los campos de la tabla menos el campo clave // Pasar esos campos a un arreglo de campos y valores // actualizar bool datosOK = true; Tablas otabla = new Tablas(); TablasBus tablasGrd = new TablasBus(); otabla = tablasGrd.TablasGetById(Tabla); if (ListDetalle == null) { DetallesColumnasTablasBus oDetalleGrd = new DetallesColumnasTablasBus(); ListDetalle = oDetalleGrd.DetallesColumnasTablasGetByCodigo(Tabla); } //ACA SE RECORREN TODAS LAS ROWS DE LA GRILLA foreach (DataGridViewRow row in _vista.grilla.Rows) { if (!row.IsNewRow) { string caso = row.Cells["ALTERADO"].Value.ToString(); if (caso != "0") { string[] nombreCampos = { }; string[] valoresCampos = { }; string valorClave = ""; string columnaClave = ""; int posicion = 0; // Actualizar tabla foreach (DetallesColumnasTablas oDetalle in ListDetalle) { posicion++; if (oDetalle.DctDescripcion != campoClave || (row.Cells[_vista.grilla.ColumnCount - 1].Value.ToString() == "3" && oDetalle.DctDescripcion == campoClave && !claveSecuencia)) { Array.Resize(ref nombreCampos, nombreCampos.Length + 1); Array.Resize(ref valoresCampos, valoresCampos.Length + 1); nombreCampos[nombreCampos.Length - 1] = oDetalle.DctColumna; if (row.Cells[posicion - 1].Visible) { if (row.Cells[posicion - 1].ValueType == typeof(DateTime)) { String fechatmp; fechatmp = row.Cells[posicion - 1].FormattedValue.ToString(); valoresCampos[valoresCampos.Length - 1] = fechatmp; } else { if (row.Cells[posicion - 1].Value != null) { valoresCampos[valoresCampos.Length - 1] = row.Cells[posicion - 1].Value.ToString(); } else { if (oDetalle.DctTipoControl == "CHKCK") { valoresCampos[valoresCampos.Length - 1] = ((DataGridViewCheckBoxCell)row.Cells[posicion - 1]).FalseValue.ToString(); } } } } else // Si la columna a actualizar no es visible tiene una homonima visible // Busco la homonima visible y tomo su valor que es el que debo tener en cuenta para actualizar //ACA TENDRIA QUE RECUPERAR EL VALOR DEL cmbLista, pero no lo hace!!!!!!!!!!!! { object celda = row.Cells[oDetalle.DctColumna]; switch (oDetalle.DctTipoControl) { case "COMBO": { valoresCampos[valoresCampos.Length - 1] = ((DataGridViewComboBoxCell)celda).Value.ToString(); break; } case "CHKCK": { valoresCampos[valoresCampos.Length - 1] = ((DataGridViewCheckBoxCell)celda).Value.ToString(); break; } case "FECHA": { valoresCampos[valoresCampos.Length - 1] = ((DataGridViewTextBoxCell)celda).Value.ToString(); valoresCampos[valoresCampos.Length - 1] = valoresCampos[valoresCampos.Length - 1].Substring(0, 9); break; } } } } else { if (row.Cells[posicion - 1].Value != null) { valorClave = row.Cells[posicion - 1].Value.ToString(); } columnaClave = oDetalle.DctColumna; } } ; //FIN FOREACH DE DETALLES COLUMNA // Para cada registro deberia actualizar su estado si se pudo actualizar switch (caso) { case "1": { // Update // Para cada campo validar que tenga el tipo de dato adecuado // contra la estructura de la tabla que esta en _estructuraTablaGrilla datatable // Si todos los campos menos la clave son validos actualizo foreach (DataRow oCampo in _estructuraTablaGrilla.Rows) { int pos; pos = Array.IndexOf(nombreCampos, oCampo.ItemArray[2]); if (pos >= 0 && datosOK) { datosOK = (oUtil.TipoDatoValido(valoresCampos[pos], oCampo.ItemArray[4].ToString())); } //MessageBox.Show(oCampo.ItemArray[2].ToString()); // campo } if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "U")) { row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } break; } case "2": { // Delete if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "D")) { _vista.grilla.Rows.Remove(row); row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } break; } case "3": { // Insert // Para cada campo validar que tenga el tipo de dato adecuado // contra la estructura de la tabla que esta en _estructuraTablaGrilla datatable // Si todos los campos inclusive la clave, si no es secuencia, son validos actualizo foreach (DataRow oCampo in _estructuraTablaGrilla.Rows) { int pos; pos = Array.IndexOf(nombreCampos, oCampo.ItemArray[2]); if (pos >= 0 && datosOK) { datosOK = (oUtil.TipoDatoValido(valoresCampos[pos], oCampo.ItemArray[4].ToString())); if (valoresCampos[pos] != null) { datosOK = valoresCampos[pos].Length > 0 || oCampo.ItemArray[8].ToString() == "Y"; } } } if (claveSecuencia) { if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "IN")) { row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } } else { if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "I")) { row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } } break; } } } ; if (!datosOK) { MessageBox.Show("Error al actualizar los datos, Revice las filas resaltadas."); } } } }
public void Inicializar(string tabla, string campoClave, bool claveSecuencia) { _filtroCampos = ""; _filtroValores = ""; _Campo = ""; _Checks = ""; _Combos = ""; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(tabla); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctTipoControl == "COMBO") { _Combos += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; } if (oDetalle.DctTipoControl == "CHECK") { _Checks += ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; } //else _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "FECHA")) { _vista.grupoFecha = true; _vista.fechaDesde = DateTime.Now.Date.AddMonths(-1); _vista.fechaHasta = DateTime.Now.Date; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _Fecha = oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.fechaDesde.ToString("dd/MM/yyyy") + "%" + _vista.fechaHasta.ToString("dd/MM/yyyy") + "&"; } if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl == "ESTADO")) { _vista.grupoEstado = true; _filtroCampos = _filtroCampos + oDetalle.DctColumna + "&"; _filtroValores = _filtroValores + _vista.comboEstado.Text + "&"; } if (campoClave == oDetalle.DctDescripcion) { columnaClave = oDetalle.DctColumna; } } oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion"); if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } TablasBus oTablasBus = new TablasBus(); DataTable dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); _vista.cantidad = oUtil.CargarGrilla(_vista.grilla, dt) + " registros"; int indice = 0; foreach (DetallesColumnasTablas oDetalle in ListDetalle) { if (oDetalle.DctTipoControl == "COMBO") { DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); cmb.HeaderText = oDetalle.DctDescripcion; cmb.Name = oDetalle.DctColumna; // CARGAR LA LISTA DE VALORES DEL COMBO switch (oDetalle.DctListaValores) { case "AREAS": { AreasBus oAreaBusCombo = new AreasBus(); cmb.DataSource = oAreaBusCombo.AreasGetAll(); cmb.DisplayMember = "AreDescripcion"; cmb.ValueMember = "AreCodigo"; break; } default: break; } _vista.grilla.Columns.Add(cmb); foreach (DataGridViewRow row in _vista.grilla.Rows) { row.Cells[_vista.grilla.ColumnCount - 1].Value = row.Cells[indice].Value; } _vista.grilla.Columns[indice].Visible = false; } if (oDetalle.DctTipoControl == "CHECK") { DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn(); chk.HeaderText = oDetalle.DctDescripcion; chk.Name = oDetalle.DctColumna; _vista.grilla.Columns.Add(chk); foreach (DataGridViewRow row in _vista.grilla.Rows) { row.Cells[_vista.grilla.ColumnCount - 1].Value = Equals(row.Cells[indice].Value, "S"); } _vista.grilla.Columns[indice].Visible = false; } indice++; } _vista.grilla.Columns.Add("Estado", ""); _vista.grilla.Columns[campoClave].ReadOnly = true; _vista.grilla.Columns[_vista.grilla.ColumnCount - 1].Visible = false; foreach (DataGridViewRow row in _vista.grilla.Rows) { // if (!row.IsNewRow) row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } // Obtengo nombre de la tabla Tablas otabla = new Tablas(); otabla = oTablasBus.TablasGetById(tabla); // Obtengo la estructura de la tabla con la que cargue la grilla _estructuraTablaGrilla = oTablasBus.Estructura(otabla.TabNombre); // Si la clave es secuencia no permito editarla, caso contrario si // La clave se edita unicamente cuando se agrega un nuevo registro, esto se habilita en addnew // cuando doy confirmar cambios se debe validar cada uno de los campos teniendo en cuenta los tipos de datos de la tabla y el mapeo }
public void ActualizaTabla(string Tabla, string campoClave, bool claveSecuencia) { // Obtener de DetallesColumnasTablas todos los campos de la tabla menos el campo clave // Pasar esos campos a un arreglo de campos y valores // actualizar bool datosOK = true; Tablas otabla = new Tablas(); TablasBus tablasGrd = new TablasBus(); otabla = tablasGrd.TablasGetById(Tabla); DetallesColumnasTablasBus oDetalleGrd = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleGrd.DetallesColumnasTablasGetByCodigo(Tabla); foreach (DataGridViewRow row in _vista.grilla.Rows) { if (!row.IsNewRow) { string[] nombreCampos = { }; string[] valoresCampos = { }; string valorClave = ""; string columnaClave = ""; int posicion = 0; // Actualizar tabla foreach (DetallesColumnasTablas oDetalle in ListDetalle) { posicion++; if (oDetalle.DctDescripcion != campoClave || (row.Cells[_vista.grilla.ColumnCount - 1].Value.ToString() == "3" && oDetalle.DctDescripcion == campoClave && !claveSecuencia)) { Array.Resize(ref nombreCampos, nombreCampos.Length + 1); Array.Resize(ref valoresCampos, valoresCampos.Length + 1); nombreCampos[nombreCampos.Length - 1] = oDetalle.DctColumna; if (row.Cells[posicion - 1].Visible) { if (row.Cells[posicion - 1].ValueType == typeof(DateTime)) { String fechatmp; fechatmp = row.Cells[posicion - 1].FormattedValue.ToString(); valoresCampos[valoresCampos.Length - 1] = fechatmp; } else { valoresCampos[valoresCampos.Length - 1] = row.Cells[posicion - 1].Value.ToString(); } } else // Si la columna a actualizar no es visible tiene una homonima visible // Busco la homonima visible y tomo su valor que es el que debo tener en cuenta para actualizar { for (int pos = posicion; pos < row.Cells.Count; pos++) { if (_vista.grilla.Columns[posicion - 1].Name == _vista.grilla.Columns[pos].Name) { if (_vista.grilla.Columns[pos].ValueType == typeof(string)) { valoresCampos[valoresCampos.Length - 1] = row.Cells[pos].Value.ToString(); } else //Es un checkbox { valoresCampos[valoresCampos.Length - 1] = row.Cells[pos].Value.Equals(true) ? "S" : "N"; } } } } } else //Agrego un registro y la clave no es secuencia { valorClave = row.Cells[posicion - 1].Value.ToString(); columnaClave = oDetalle.DctColumna; } } ; // Para cada registro deberia actualizar su estado si se pudo actualizar if (row.Cells[_vista.grilla.ColumnCount - 1].Value.ToString() == "1" && !row.IsNewRow) { // Update // Para cada campo validar que tenga el tipo de dato adecuado // contra la estructura de la tabla que esta en _estructuraTablaGrilla datatable // Si todos los campos menos la clave son validos actualizo foreach (DataRow oCampo in _estructuraTablaGrilla.Rows) { int pos; pos = Array.IndexOf(nombreCampos, oCampo.ItemArray[2]); if (pos >= 0 && datosOK) { datosOK = (oUtil.TipoDatoValido(valoresCampos[pos], oCampo.ItemArray[4].ToString())); } //MessageBox.Show(oCampo.ItemArray[2].ToString()); // campo } if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "U")) { row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } } else if (row.Cells[_vista.grilla.ColumnCount - 1].Value.ToString() == "2" && !row.IsNewRow) { // Delete tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "D"); } else if (row.Cells[_vista.grilla.ColumnCount - 1].Value.ToString() == "3" && !row.IsNewRow) { // Insert // Para cada campo validar que tenga el tipo de dato adecuado // contra la estructura de la tabla que esta en _estructuraTablaGrilla datatable // Si todos los campos inclusive la clave, si no es secuencia, son validos actualizo foreach (DataRow oCampo in _estructuraTablaGrilla.Rows) { int pos; pos = Array.IndexOf(nombreCampos, oCampo.ItemArray[2]); if (pos >= 0 && datosOK) { datosOK = (oUtil.TipoDatoValido(valoresCampos[pos], oCampo.ItemArray[4].ToString())); datosOK = valoresCampos[pos].Length > 0 || oCampo.ItemArray[8].ToString() == "Y"; } } if (datosOK && tablasGrd.TablaActualizaGrid(otabla.TabNombre, nombreCampos, valoresCampos, columnaClave + "='" + valorClave + "'", "I")) { row.Cells[_vista.grilla.ColumnCount - 1].Value = "0"; } } ; } } ; if (!datosOK) { MessageBox.Show("Error al actualizar los datos, Revice las filas resaltadas."); } }
private void Inicializar() { int x = 120; int y = 40; DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> ListDetalle = oDetalleBus.DetallesColumnasTablasGetByCodigo(_Tabla); foreach (DetallesColumnasTablas oDetalle in ListDetalle) { Label lblELabel = new System.Windows.Forms.Label(); lblELabel.Location = new System.Drawing.Point(x - 100, y); lblELabel.Name = "lblE" + oDetalle.DctColumna; lblELabel.Size = new System.Drawing.Size(88, 21); lblELabel.TabIndex = 0; lblELabel.Text = oDetalle.DctDescripcion + ":"; Controls.Add(lblELabel); if (oDetalle.DctTipoControl == "TEXTO") { TextBox txtTexto = new System.Windows.Forms.TextBox(); txtTexto.Location = new System.Drawing.Point(x, y); txtTexto.Name = "txt" + oDetalle.DctColumna; txtTexto.Size = new System.Drawing.Size(88, 21); txtTexto.TabIndex = 0; txtTexto.Text = ""; Controls.Add(txtTexto); } if (oDetalle.DctTipoControl == "LABEL") { Label lblLabel = new System.Windows.Forms.Label(); lblLabel.Location = new System.Drawing.Point(x, y); lblLabel.Name = "txt" + oDetalle.DctColumna; lblLabel.Size = new System.Drawing.Size(88, 21); lblLabel.TabIndex = 0; lblLabel.Text = ""; Controls.Add(lblLabel); } if (oDetalle.DctTipoControl == "COMBO") { ComboBox cmbCombo = new System.Windows.Forms.ComboBox(); cmbCombo.Location = new System.Drawing.Point(x, y); cmbCombo.Name = "cmb" + oDetalle.DctColumna; cmbCombo.Size = new System.Drawing.Size(88, 21); cmbCombo.TabIndex = 0; Controls.Add(cmbCombo); } if (oDetalle.DctTipoControl == "FECHA") { DateTimePicker dtpDate = new System.Windows.Forms.DateTimePicker(); dtpDate.Location = new System.Drawing.Point(x, y); dtpDate.Name = "dtp" + oDetalle.DctColumna; dtpDate.Size = new System.Drawing.Size(88, 21); dtpDate.TabIndex = 0; Controls.Add(dtpDate); } y += 70; } Button btnBotonGuardar = new System.Windows.Forms.Button(); btnBotonGuardar.Location = new System.Drawing.Point(x, y); btnBotonGuardar.Name = "btnGuardar"; btnBotonGuardar.Size = new System.Drawing.Size(80, 30); btnBotonGuardar.Text = "Guardar"; btnBotonGuardar.TabIndex = 0; Controls.Add(btnBotonGuardar); Button btnBotonCancelar = new System.Windows.Forms.Button(); btnBotonCancelar.Location = new System.Drawing.Point(x + 100, y); btnBotonCancelar.Name = "btnCancelar"; btnBotonCancelar.Text = "&Cancelar"; btnBotonCancelar.Size = new System.Drawing.Size(80, 30); btnBotonCancelar.TabIndex = 0; Controls.Add(btnBotonCancelar); }
public void Inicializar(string tabla, string tabla2, string nexoTablas, string campoClave1, string campoClave2) /* * CONSIDERANDO LA NUEVA IDEA EN TABLA2 VA A ESTAR EL NEXO DE CAMPOS */ { tablaPrimaria = tabla; tablaSecundaria = tabla2; tablaNexo = nexoTablas; _camposPrimarios = campoClave1; _camposSecundarios = campoClave2; _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); DataTable dt = new DataTable(); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> list = oDetalleBus.DetallesColumnasTablasGetByCodigo(tablaSecundaria); foreach (DetallesColumnasTablas oDetalle in list) { foreach (string a in _camposSecundarios.Split('&')) { if (oDetalle.DctColumna == a) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; dt.Columns.Add(oDetalle.DctDescripcion); if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } } } } if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } //SE CARGA EL COMBO DE BUSQUEDA oUtil.CargarCombo(_vista.busquedaSecundaria, _dtCombo, "DctColumna", "DctDescripcion"); _dtCombo = new DataTable(); _dtCombo.Columns.Add("DctColumna", typeof(string)); _dtCombo.Columns.Add("DctDescripcion", typeof(string)); dt = new DataTable(); _Campo = ""; list = oDetalleBus.DetallesColumnasTablasGetByCodigo(tablaPrimaria); foreach (DetallesColumnasTablas oDetalle in list) { foreach (string a in _camposPrimarios.Split('&')) { if (oDetalle.DctColumna == a) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; dt.Columns.Add(oDetalle.DctDescripcion); if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } } } } if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } //SE CARGA EL COMBO DE BUSQUEDA oUtil.CargarCombo(_vista.busquedaPrimaria, _dtCombo, "DctColumna", "DctDescripcion"); TablasBus oTablasBus = new TablasBus(); _vista.lblEtiqueta1.Text = oTablasBus.TablasGetById(tabla).TabNombre; _vista.lblEtiqueta2.Text = oTablasBus.TablasGetById(tabla2).TabNombre; dt = oTablasBus.TablasBusquedaGetAllFilter(tabla, _Campo, _filtroCampos, _filtroValores); _vista.cantidadPrimaria = "Se encontraron: " + oUtil.CargarGrilla(_vista.grillaPrimaria, dt) + " registros"; }
public void CargarGrillaSecundaria() { try { clavePrimaria = _vista.grillaPrimaria.SelectedCells[0].Value.ToString(); _filtroCampos = ""; _filtroValores = ""; _Campo = ""; string[] columnas = _camposSecundarios.Split('&'); DataTable dt = new DataTable(); DetallesColumnasTablasBus oDetalleBus = new DetallesColumnasTablasBus(); List <DetallesColumnasTablas> list = oDetalleBus.DetallesColumnasTablasGetByCodigo(tablaSecundaria); foreach (DetallesColumnasTablas oDetalle in list) { foreach (string a in columnas) { if (oDetalle.DctColumna == a) { _Campo = _Campo + ' ' + oDetalle.DctColumna + ' ' + oDetalle.DctDescripcion + ','; dt.Columns.Add(oDetalle.DctDescripcion); if ((oDetalle.DctFiltroBusqueda == "S") && (oDetalle.DctTipoControl != "FECHA") && oDetalle.DctTipoControl != "ESTADO") { // _dtCombo.Rows.Add(oDetalle.DctColumna, oDetalle.DctDescripcion); } } } } if (_Campo.Length > 0) { _Campo = _Campo.Substring(0, _Campo.Length - 1); } //SE CARGA EL COMBO DE BUSQUEDA /* oUtil.CargarCombo(_vista.comboBuscar, _dtCombo, "DctColumna", "DctDescripcion"); * if (_Campo.Length > 0) * _Campo = _Campo.Substring(0, _Campo.Length - 1); */ TablasBus oTablasBus = new TablasBus(); Tablas oTabla = oTablasBus.TablasGetById(tablaSecundaria); string codigo1 = _camposPrimarios.Split('&')[0]; string codigo2 = _camposSecundarios.Split('&')[0]; switch (tablaNexo) { case "FUNCIONALIDADES_ROLES": { FuncionalidadesRolesBus oFuncionalidadesRol = new FuncionalidadesRolesBus(); List <FuncionalidadesRoles> listaRF = oFuncionalidadesRol.FuncionalidadesGetById(clavePrimaria); FuncionalidadesBus oFunBus = new FuncionalidadesBus(); Funcionalidades oFuncionalidades = new Funcionalidades(); foreach (FuncionalidadesRoles a in listaRF) { oFuncionalidades = oFunBus.FuncionalidadesGetById(a.FunCodigo); cargarDT(dt, oFuncionalidades); //dt.Rows.Add(oFuncionalidades.FunCodigo, oFuncionalidades.FunDescripcion, oFuncionalidades.FunFuncionalidad, oFuncionalidades.ffoCodigo); } break; } case "FUNCIONALIDADES_USUARIOS": { FuncionalidadesUsuariosBus oFuncionalidadesUsr = new FuncionalidadesUsuariosBus(); List <FuncionalidadesUsuarios> listaUF = oFuncionalidadesUsr.FuncionalidadesUsuariosGetById(clavePrimaria); FuncionalidadesBus oFunBus = new FuncionalidadesBus(); Funcionalidades oFuncionalidades = new Funcionalidades(); foreach (FuncionalidadesUsuarios a in listaUF) { oFuncionalidades = oFunBus.FuncionalidadesGetById(a.FunCodigo); cargarDT(dt, oFuncionalidades); //dt.Rows.Add(oFuncionalidades.FunCodigo, oFuncionalidades.FunDescripcion, oFuncionalidades.FunFuncionalidad, oFuncionalidades.ffoCodigo); } break; } } _vista.cantidadSecundaria = "Se encontraron: " + oUtil.CargarGrilla(_vista.grillaSecundaria, dt) + " registros"; } catch (Exception ex) { MessageBox.Show(ex.Message); } }