public void iniDialogoAtri(DataGridViewSelectedRowCollection fila, ref DCapturaAtributo dlgAtri) { if (fila[0].Cells[1].Value != null) { dlgAtri.clave.Checked = true; dlgAtri.cbListEnt.Enabled = false; } else dlgAtri.cbListEnt.Enabled = true; nameAtributo = dlgAtri.tbName.Text = (string)fila[0].Cells[2].Value; dlgAtri.cbTipo.Text = (string)fila[0].Cells[3].Value; dlgAtri.tbTamaño.Text = (string)fila[0].Cells[4].Value; dlgAtri.cbListEnt.Text = (string)fila[0].Cells[6].Value; dlgAtri.cbListEnt.Items.AddRange(getListaDeEntidades()); if (dlgAtri.cbListEnt.Text.CompareTo("None")==0) dlgAtri.clave.Enabled = true; else dlgAtri.clave.Enabled = false; }
private CNodoAtributo creaNuevoAtri(DCapturaAtributo dlgAtri) { CNodoAtributo nuevo = new CNodoAtributo(); int tam = 0, clave = 0; string ent; if (dlgAtri.clave.Checked == true) clave = 1; nuevo.setClavePrimaria(clave); nuevo.setNombre(dlgAtri.tbName.Text); nuevo.setTipo(dlgAtri.cbTipo.SelectedIndex + 1); switch (nuevo.getTipo()) { case 1://Char tam = 1; break; case 2://short tam = 2; break; case 3://int tam = 4; break; case 4://float tam = 4; break; case 5://long tam = 8; break; case 6://double tam = 8; break; case 7://string tam = Convert.ToInt32(dlgAtri.tbTamaño.Text); break; } nuevo.setTamaño(tam); ent = dlgAtri.cbListEnt.Text; CNodoEntidad aux; for (aux = archivo.getListaEntidad().getCabListEnt(); aux != null && aux.getNombre() != ent; aux = aux.getSigEnt()) ; if (aux != null) { nuevo.setEntRel(aux); nuevo.setApEntRel(aux.getDir()); } return (nuevo); }
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); } }