private void btEditaAtributo_Click(object sender, EventArgs e) { DCapturaAtributo dlgCapAtri = new DCapturaAtributo(); DataGridViewSelectedRowCollection fila = null; bool band = true; fila = TablaDeAtributos.SelectedRows; if (fila.Count == 1) { iniDialogoAtri(fila, ref dlgCapAtri); if (dlgCapAtri.ShowDialog() == DialogResult.OK) { CNodoAtributo nuevo = creaNuevoAtri(dlgCapAtri); // Checar si se modifico la clave primaria if (fila[0].Cells[1].Value != null) { if (nuevo.getClave() == 0) { MessageBox.Show("No se puede cambiar la clave primaria. " + "Para poder hacerlo seleccione el nuevo " + "atributo y la clave anterior sera sustituida " + "por la nueva.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); band = false; } } else if (nuevo.getClave() == 1 ) { //Cambiar todas las claves externas a la nueva clave y elimnar la clave anterior archivo.actClavePrim(nameEntidad, nameAtributo); archivo.modificaAtributo(nameEntidad, nameAtributo, nuevo); archivo.actClavesExt(nuevo.getTipo(), nuevo.getTamaño(), nameEntidad); imprimeAtributos(); imprimeEntidades(); } /* Checar si se modifico el tipo de dato de alguna clave primaria*/ if( band == true) if (fila[0].Cells[3].Value.ToString().CompareTo(dameTipoDato(nuevo.getTipo()))!= 0 || fila[0].Cells[4].Value.ToString().CompareTo(nuevo.getTamaño().ToString()) != 0 ) { if( fila[0].Cells[1].Value != null ) archivo.actClavesExt(nuevo.getTipo(),nuevo.getTamaño(), nameEntidad); else if (fila[0].Cells[6].Value.ToString().CompareTo("None")!= 0 ) { if( MessageBox.Show("El tipo de dato o el tamaño de este atributo no se puede modificar, "+ "ya que cuenta con una clave externa a la entidad "+ fila[0].Cells[6].Value.ToString(), "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK ) { band = false; } } } /*Esta funcion se llamara en el caso de que se haya modificado la clave externa*/ if (nuevo.getEntRel() != null && band == true) { //Checar que la entidad seleccionada sea diferente a la de la tabla if (fila[0].Cells[6].Value.ToString().CompareTo(nuevo.getEntRel().getNombre()) != 0) { switch (archivo.ValidaClaveExt(nuevo.getEntRel().getNombre(), nuevo.getTipo())) { case 1: //La entidad no tiene atributos MessageBox.Show("La entidad "+nuevo.getEntRel().getNombre()+" no tiene atributos", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 2: // El tipo de dato de la clave primaria de la entidad es diferente al tipo de dato a la clave externa MessageBox.Show("No se puede establecer la clave externa, ya que el tipo de dato " + "de la clave primaria en la entidad " + nuevo.getEntRel().getNombre() + " no coincide con el tipo de dato de la clave externa","Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 3: // La clave primaria de la entidad es igual archivo.modificaAtributo(nameEntidad, nameAtributo, nuevo); imprimeAtributos(); imprimeEntidades(); break; case 4: MessageBox.Show("No existe una clave primaria en la entidad " + nuevo.getEntRel().getNombre(), "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } else { archivo.modificaAtributo(nameEntidad, nameAtributo, nuevo); imprimeAtributos(); imprimeEntidades(); } } else { if (band == true) { archivo.modificaAtributo(nameEntidad, nameAtributo, nuevo); imprimeAtributos(); imprimeEntidades(); } } } } else if (fila.Count > 0) MessageBox.Show("Selecione solamente una fila","Error",MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show("Seleccione toda la fila", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
private void btAgregarAtri_Click(object sender, EventArgs e) { DCapturaAtributo dlgAtri = new DCapturaAtributo(); dlgAtri.cbListEnt.Items.AddRange(getListaDeEntidades()); if (dlgAtri.ShowDialog() == DialogResult.OK) { if (archivo.checaNombreAtri(nameEntidad, dlgAtri.tbName.Text) == false) { CNodoAtributo nuevo = creaNuevoAtri(dlgAtri); if (nuevo.getEntRel() != null) { switch (archivo.ValidaClaveExt(nuevo.getEntRel().getNombre(), nuevo.getTipo())) { case 1: //La entidad no tiene atributos MessageBox.Show("La entida "+nuevo.getEntRel().getNombre()+" no tiene atributos", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 2: // El tipo de dato de la clave primaria de la entidad es diferente al tipo de dato a la clave externa MessageBox.Show("No se puede establecer la clave externa, ya que el tipo de dato " + "de la clave primaria en la entidad " + nuevo.getEntRel().getNombre() + " no coincide con el tipo de dato de la clave externa","Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 3: // La clave primaria de la entidad es igual archivo.AltaAtributo(nuevo, nameEntidad); btEditaAtributo.Enabled = true; btElimarAtri.Enabled = true; imprimeAtributos(); imprimeEntidades(); break; case 4: MessageBox.Show("No existe una clave primaria en la entidad " + nuevo.getEntRel().getNombre(), "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } } else { archivo.AltaAtributo(nuevo, nameEntidad); btEditaAtributo.Enabled = true; btElimarAtri.Enabled = true; imprimeAtributos(); imprimeEntidades(); } } else MessageBox.Show("El atributo ya existe", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); } }