/// </summary> ////////////// private void actualizaDataGridRegistros(List <string> lCamp) { dgConsultas.Rows.Clear(); if (auxt.Registros.Count != 0) { int nReg = auxt.Registros.Count; for (int i = 0; i < nReg; i++) { int nCampos = lCamp.Count; int nCamposReg = auxt.Registros[i].Count; dgConsultas.Rows.Add(); int j2 = 0; for (int j = 0; j < nCampos; j++) { RegistroAtributo auxr = null; auxr = auxt.Registros[i].FirstOrDefault(p => p.Atr.Nombre == lCamp[j] || p.Atr.NombreExt == lCamp[j]); if (auxr != null) { dgConsultas.Rows[i].Cells[j].Value = auxr.Reg; } else { dgConsultas.Rows[i].Cells[j].Value = "null"; } } } } }
private bool IntegridadReferencialClavesPrimarias(RegistroAtributo regAt) { bool existe = false; foreach (Tabla val in lTablas) { Atributo at = null; at = val.LAtributo.FirstOrDefault(p => p.Nombre == regAt.Atr.Nombre); if (at != null && at.TipoIndice == "Clave Foranea") { int nReg = val.Registros.Count; for (int i = 0; i < nReg; i++) { RegistroAtributo aux = null; aux = val.Registros[i].FirstOrDefault(p => p.Reg == regAt.Reg && p.Atr.Nombre == regAt.Atr.Nombre); if (aux != null) { existe = true; break; } else { existe = false; } } } } return(existe); }
private void btEliminaRegistro_Click(object sender, EventArgs e) { if (iIndiceRegistro != -1) { DialogResult res = MessageBox.Show("¿Esta seguro de eliminar este registro?, los cambios realizados no podran deshacerse", "Eliminar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (res == DialogResult.OK) { RegistroAtributo r = auxTab.Registros[iIndiceRegistro].FirstOrDefault(p => p.Atr.TipoIndice == "Clave Primaria"); bool existe = IntegridadReferencialClavesPrimarias(r); if (!existe) { auxTab.Registros.RemoveAt(iIndiceRegistro); auxTab.ActualizaTabla(); actualizaDataGridRegistros(); } else { MessageBox.Show("No se puede eliminar el registro por que no se está respetando la integridad de los datos"); } } iIndiceRegistro = -1; } else { MessageBox.Show("Elija el registro que desea eliminar"); } }
//Boton Agregar private void button1_Click(object sender, EventArgs e) { if (i < inumCampos && tBoxReg.Text != "") { RegistroAtributo r = new RegistroAtributo(tBoxReg.Text, listaCampos[i]); registro.Add(r); i++; if (i < inumCampos) { if (listaCampos[i].TipoIndice == "Clave Foranea") { label.Text = listaCampos[i].NombreExt; } else { label.Text = listaCampos[i].Nombre; } } if (i < inumCampos) { if (BandInsercionModificacion == 1 && (listaCampos[i].TipoIndice == "Clave Primaria" || listaCampos[i].TipoIndice == "Clave Secundaria")) { i++; } } if (i < inumCampos) { if (listaCampos[i].TipoIndice == "Clave Foranea") { label.Text = listaCampos[i].NombreExt; } else { label.Text = listaCampos[i].Nombre; } tBoxReg.Text = ""; } if (i == inumCampos) { Aceptar.Visible = true; button1.Visible = false; tBoxReg.Visible = false; label.Text = "Todos los campos han sido completados"; i++; } } else { MessageBox.Show("Introdusca la información"); } }
private void btModificaRegistro_Click(object sender, EventArgs e) { if (iIndiceRegistro != -1) { List <RegistroAtributo> r = new List <RegistroAtributo>(); Modifica_Atributo f = new Modifica_Atributo(auxTab.LAtributo, 1); if (f.ShowDialog() == DialogResult.OK) { r = f.Reg; int ntam = r.Count; int i2 = 0; List <Atributo> l = auxTab.LAtributo; bool existe = IntegridadReferencialClavesSecundarias(r); if (existe) { foreach (Atributo value in l) { RegistroAtributo RegistroActual = null; RegistroAtributo RegistroNuevo = null; RegistroActual = auxTab.Registros[iIndiceRegistro].FirstOrDefault(p => p.Atr.Nombre == value.Nombre); RegistroNuevo = r.FirstOrDefault(p => p.Atr.Nombre == value.Nombre); if (RegistroActual != null && RegistroNuevo != null) { RegistroActual.Reg = RegistroNuevo.Reg; } else if (RegistroNuevo != null) { auxTab.Registros[iIndiceRegistro].Add(RegistroNuevo); } } auxTab.ActualizaTabla(); actualizaDataGridRegistros(); } else { MessageBox.Show("No se puede insertar el registro por que no se está respetando la integridad de los datos"); } } iIndiceRegistro = -1; } else { MessageBox.Show("Seleccione un registro en la tabla"); } }
private bool IntegridadReferencialClavesSecundarias(List <RegistroAtributo> reg) { bool existe = false; List <RegistroAtributo> lClavesSec = null; lClavesSec = reg.Where(p => p.Atr.TipoIndice == "Clave Foranea").ToList(); if (lClavesSec.Count != 0) { foreach (RegistroAtributo value in lClavesSec) { foreach (Tabla val in lTablas) { Atributo at = null; at = val.LAtributo.FirstOrDefault(p => p.Nombre == value.Atr.Nombre); if (at != null && at.TipoIndice == "Clave Primaria") { int nReg = val.Registros.Count; for (int i = 0; i < nReg; i++) { RegistroAtributo aux = null; aux = val.Registros[i].FirstOrDefault(p => p.Reg == value.Reg && p.Atr.Nombre == value.Atr.Nombre); if (aux != null) { existe = true; break; } else { existe = false; } } } } if (!existe) { break; } } } else { existe = true; } return(existe); }
//Nuevo Registro private void NewAdd_Click(object sender, EventArgs e) { List <RegistroAtributo> r = new List <RegistroAtributo>(); Modifica_Atributo f = new Modifica_Atributo(auxTab.LAtributo, 0); if (f.ShowDialog() == DialogResult.OK) { r = f.Reg; //Antes de insertar el registro se valida la integridad de los datos, si los datos que se pretenden insertar "Existen" //A estos se les permite la inserción, aun que despues de haber pasado este primer filtro tambien se verifica //Si la clave primaria que identifica al Registro ya exsite como identificador de algun otro registro y si esto es asi //No se permite su inserción. bool existe = IntegridadReferencialClavesSecundarias(r); if (existe) { if (auxTab.BPK) { RegistroAtributo ClavePrimaria = r.FirstOrDefault(p => p.Atr.TipoIndice == "Clave Primaria"); if (auxTab.CPrimarias.Contains(ClavePrimaria.Reg)) { MessageBox.Show("No se puede insertar el registro por que ya existe una Clave Primaria con el mismo valor"); } else { auxTab.Registros.Add(r); auxTab.CPrimarias.Add(ClavePrimaria.Reg); auxTab.BandReg = true; } } else { auxTab.Registros.Add(r); auxTab.BandReg = true; } auxTab.ActualizaTabla(); actualizaDataGridRegistros(); } else { MessageBox.Show("No se puede insertar el registro por que no se está respetando la integridad de los datos"); } } }
private void btnEliminaAtr_Click(object sender, EventArgs e) { Atributo atAux; DialogResult res = MessageBox.Show("¿Esta seguro de eliminar este atributo?, los cambios realizados no podran deshacerse", "Eliminar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (res == DialogResult.OK) { if (sNombreAtr != "") { atAux = auxTab.LAtributo.FirstOrDefault(p => p.Nombre == sNombreAtr); if (atAux.TipoIndice == "Clave Primaria" && auxTab.BandReg) { MessageBox.Show("No se puede eliminar este atributo por que es una llave primaria que actualmente contiene datos"); } else { if (atAux.TipoIndice == "Clave Primaria") { auxTab.BPK = false; } auxTab.LAtributo.Remove(atAux); foreach (List <RegistroAtributo> value in auxTab.Registros) { RegistroAtributo auxreg = value.FirstOrDefault(p => p.Atr.Nombre == sNombreAtr); value.Remove(auxreg); } auxTab.ActualizaTabla(); actualizaDataGridAtributos(); } } else { MessageBox.Show("Elija el atributo que desea eliminar"); } } }