示例#1
0
        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;
  
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
            }
        }