Example #1
0
 private void Aceptar_Click(object sender, EventArgs e)
 {
     try
     {
         this.DialogResult = DialogResult.OK;
         if (entidad.Atributos[indice].Tipo.Equals('E'))
         {
             atributos.Push(Int32.Parse(textBoxDato.Text).ToString());
         }
         else if (entidad.Atributos[indice].Tipo.Equals('D'))
         {
             atributos.Push(float.Parse(textBoxDato.Text).ToString());
         }
         else if (entidad.Atributos[indice].Tipo.Equals('C'))
         {
             atributos.Push(MetodosAuxiliares.ajustaCadena(textBoxDato.Text, entidad.Atributos[indice].Longitud));
         }
         this.Close();
     }
     catch (FormatException)
     {
         MessageBox.Show("Este atributo es de tipo entero ponga un entero", "Error");
         textBoxDato.Text = "";
     }
 }
        private void DataGridSecundario_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int    i;
            string valor;

            valor = "";
            Entidad          entidad;
            Atributo         atributo;
            Indice           indice;
            DataGridViewCell cell;

            cell     = dataGridSecundario.Rows[e.RowIndex].Cells[0];
            entidad  = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(this.comboBoxEntidad.Text, Constantes.tam));
            atributo = entidad.buscaAtributo(MetodosAuxiliares.ajustaCadena(this.comboBoxAtributosSecundarios.Text, Constantes.tam));
            this.dataGridSecundarioAuxiliar.Rows.Clear();
            if (atributo.Tipo.Equals('C'))
            {
                valor = MetodosAuxiliares.ajustaCadena(cell.Value.ToString(), atributo.Longitud);
            }
            else
            {
                valor = cell.Value.ToString();
            }
            indice = atributo.Indices.First();
            i      = ((Secundario)indice).indiceLlave(valor);
            for (int j = 0; j < Constantes.tamNodoAux; j++)
            {
                if (((Secundario)indice).Apuntadores[i, j] != -1)
                {
                    this.dataGridSecundarioAuxiliar.Rows.Add(((Secundario)indice).Apuntadores[i, j]);
                }
            }
        }
Example #3
0
 private void Consulta_Click(object sender, EventArgs e)
 {
     this.listBoxAtributos.Items.Clear();
     if (!string.IsNullOrEmpty(this.comboBoxEntidades.Text))
     {
         Registro registro;
         string   llave;
         llave = this.comboBoxEntidades.Text;
         if (this.band)
         {
             llave = MetodosAuxiliares.ajustaCadena(llave, this.tam);
         }
         registro = this.entidad.Registros[llave];
         if (registro != null)
         {
             this.textBoxDirAct.Text = registro.DirAct.ToString();
             this.textBoxDirSig.Text = registro.DirSig.ToString();
             foreach (string dato in registro.Datos)
             {
                 this.listBoxAtributos.Items.Add(MetodosAuxiliares.truncaCadena(dato));
             }
         }
     }
     else
     {
         MessageBox.Show("Por favor seleccione una entidad", "Error");
     }
 }
 private void Consulta_Click(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(comboBoxEntidades.Text))
     {
         string aux = MetodosAuxiliares.ajustaCadena(comboBoxEntidades.Text, Constantes.tam);
         foreach (Entidad entidad in this.archivo.Entidades)
         {
             if (aux.Equals(entidad.Nombre))
             {
                 textBoxDirAct.Text   = entidad.DirActual.ToString();
                 textBoxDirAtrib.Text = entidad.DirAtributos.ToString();
                 textBoxDirReg.Text   = entidad.DirRegistros.ToString();
                 textBoxDirSig.Text   = entidad.DirSig.ToString();
                 listBoxAtributos.Items.Clear();
                 foreach (Atributo atributo in entidad.Atributos)
                 {
                     listBoxAtributos.Items.Add(MetodosAuxiliares.truncaCadena(atributo.Nombre));
                 }
             }
         }
     }
     else
     {
         MessageBox.Show("Por favor seleccione una entidad");
     }
 }
Example #5
0
 private void grabaIndicePrimario(Primario indice, string directorio)
 {
     try
     {
         using (writer = new BinaryWriter(new FileStream(directorio, FileMode.Open))) //Abre el archivo con el BinaryWriter
         {
             this.writer.Seek((int)indice.DirAct, SeekOrigin.Current);                //Posiciona el grabado del archivo en la dirección actual
             for (int i = 0; i < indice.Idx.Length; i++)
             {
                 if (this.tipo == 'C')
                 {
                     if (indice.Idx[i].Llave.Length != this.longitud)
                     {
                         indice.Idx[i].Llave = MetodosAuxiliares.ajustaCadena(indice.Idx[i].Llave, this.longitud);
                     }
                     this.writer.Write(indice.Idx[i].Llave.ToCharArray());
                 }
                 else if (this.tipo == 'E')
                 {
                     this.writer.Write(Int32.Parse(indice.Idx[i].Llave));
                 }
                 this.writer.Write(indice.Idx[i].Direccion);
             }
             this.writer.Write(indice.DirSig);
         }
     }
     catch (Exception e)
     {
         MessageBox.Show(e.Message);
     }
 }
        public int baja(string llave, long direccion, bool esCadena, int longitud)
        {
            int i;
            int j;

            i = -1;
            j = -1;
            if (this.existeLlave(llave))
            {
                i = this.indiceLlave(llave);
                j = this.espacioDireccion(i, direccion);
                if (j != -1)
                {
                    this.apuntadores[i, j] = -1;
                    if (this.estaVacio(i))
                    {
                        if (esCadena)
                        {
                            this.llaves[i] = MetodosAuxiliares.ajustaCadena("-1", longitud);
                        }
                        else
                        {
                            this.llaves[i] = "-1";
                        }
                    }
                }
            }
            return(i);
        }
Example #7
0
 private void Siguiente_Click(object sender, EventArgs e)
 {
     try
     {
         if (!string.IsNullOrEmpty(textBoxDato.Text))
         {
             if (entidad.Atributos[indice].Tipo.Equals('E'))
             {
                 Int32.Parse(textBoxDato.Text);
                 atributos.Push(textBoxDato.Text);
             }
             if (entidad.Atributos[indice].Tipo.Equals('D'))
             {
                 float.Parse(textBoxDato.Text);
                 atributos.Push(textBoxDato.Text);
             }
             else if (entidad.Atributos[indice].Tipo.Equals('C'))
             {
                 atributos.Push(MetodosAuxiliares.ajustaCadena(textBoxDato.Text, entidad.Atributos[indice].Longitud));
             }
             indice++;
             actualizaLabel();
             textBoxDato.Text = "";
         }
         else
         {
             MessageBox.Show("No puede hacer campos vacios", "Error");
         }
     }
     catch (FormatException)
     {
         MessageBox.Show("Este atributo es de tipo entero ponga un entero", "Error");
         textBoxDato.Text = "";
     }
 }
Example #8
0
 public Registro buscaRegistro(string llavePrimaria)
 {
     if (this.atributos[this.buscaIndiceClavePrimaria()].Tipo.Equals('C'))
     {
         llavePrimaria = MetodosAuxiliares.ajustaCadena(llavePrimaria, this.atributos[this.buscaIndiceClavePrimaria()].Longitud);
     }
     return(this.registros[llavePrimaria]);
 }
 private void comboEntidad_SelectedIndexChanged(object sender, EventArgs e)
 {
     entidad = archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(this.comboEntidad.Text, Constantes.tam));
     comboAtributo.Items.Clear();
     comboAtributo.Text = "";
     foreach (Atributo atributo in entidad.Atributos)
     {
         comboAtributo.Items.Add(MetodosAuxiliares.truncaCadena(atributo.Nombre));
     }
 }
        private void comboAtributo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Atributo atributo;

            atributo = entidad.buscaAtributo(MetodosAuxiliares.ajustaCadena(comboAtributo.Text, Constantes.tam));
            this.textBoxNombre.Text = MetodosAuxiliares.truncaCadena(atributo.Nombre);
            this.comboBoxTipo.Text  = atributo.Tipo.ToString();
            this.textBoxLong.Text   = atributo.Longitud.ToString();
            this.comboInidice.Text  = comboInidice.Items[atributo.Indice].ToString();
        }
 public int baja(bool esCadena, char[] llave, int longitud,long direccion)
 {
     int i;
     int j;
     i = this.calculaCajon(esCadena, llave);
     j = this.indiceLlave(i,direccion);
     if(j > -1)
     {
         this.apuntadores[i, j] = -1;
         llaves[i, j] = "-1";
         if(esCadena)
         {
             llaves[i, j] = MetodosAuxiliares.ajustaCadena(llaves[i, j], longitud);
         }
     }
     return i;
 }
 public int alta(bool esCadena, char[] llave, int longitud,long dirección)
 {
     int i;
     int j;
     i = this.calculaCajon(esCadena, llave);
     j = this.buscaEspacioLibre(i);
     if(j > -1)
     {
         this.apuntadores[i, j] = dirección;
         this.llaves[i, j] = new string(llave);
         if (esCadena)
         {
             llaves[i, j] = MetodosAuxiliares.ajustaCadena(llaves[i,j],longitud);
         }
     }
     return i;
 }
        private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Entidad  entidad;
            Atributo atributo;

            entidad = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(comboBoxEntRef.Text, Constantes.tam));
            if (entidad.existeIndicePrimario())
            {
                atributo              = entidad.buscaAtributoForaneo();
                this.comboTipo.Text   = atributo.Tipo.ToString();
                this.textBoxLong.Text = atributo.Longitud.ToString();
            }
            else
            {
                this.ComboIndice.Text = "0: Sin indice";
                MessageBox.Show("No existe Indice Primario", "Error");
            }
        }
Example #14
0
 private void comboEntidad_SelectedIndexChanged(object sender, EventArgs e)
 {
     this.comboAtributo.Items.Clear();
     this.entidad = archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(this.comboEntidad.Text, Constantes.tam));
     foreach (Atributo buscando in entidad.Atributos)
     {
         comboAtributo.Items.Add(MetodosAuxiliares.truncaCadena(buscando.Nombre));
     }
     if (this.comboAtributo.Items.Count > 0)
     {
         this.comboAtributo.Text = this.comboAtributo.Items[0].ToString();
     }
     else
     {
         this.comboAtributo.Text = "";
         this.comboAtributo_SelectedIndexChanged(comboAtributo, null);
     }
 }
        private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Entidad entidad;

            entidad = archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(comboBoxEntidad.Text, Constantes.tam));
            this.dataGridHash.Rows.Clear();
            this.dataGridHashAuxiliar.Rows.Clear();
            this.dataGridIdxPrimmario.Rows.Clear();
            this.dataGridSecundario.Rows.Clear();
            this.dataGridSecundarioAuxiliar.Rows.Clear();
            this.comboBoxAtributosSecundarios.Text = "";
            this.ComboBoxAtributosHash.Text        = "";
            this.comboBoxAtributosSecundarios.Items.Clear();
            this.ComboBoxAtributosHash.Items.Clear();
            this.actualizaDataGridRegistros(entidad);
            this.actualizaDataGridIndicePrimario(entidad);
            this.actualizaComboIndiceSecundario(entidad);
            this.actualizaComboIndiceHash(entidad);
        }
 public HashEstatica(string nombre, long dir, int longitud, long dirSig, bool esCadena) : base(nombre, dir, dirSig)//OH no las cantantes!!!
 {
     this.direcciones = new long[Constantes.valorHash];
     this.longitud = MetodosAuxiliares.calculaTamIdxPrim(longitud);
     this.llaves = new string[Constantes.valorHash, this.longitud];
     this.apuntadores = new long[Constantes.valorHash, this.longitud];
     for(int i = 0 ; i < Constantes.valorHash ; i++)
     {
         this.direcciones[i] = -1;
         for (int j = 0; j < this.longitud; j++)
         {
             this.llaves[i, j] = "-1";
             this.apuntadores[i,j] = -1;
             if (esCadena)
             {
                 llaves[i, j] = MetodosAuxiliares.ajustaCadena(llaves[i, j], longitud);
             }
         }
     }
 }
Example #17
0
 private void comboAtributo_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(comboAtributo.Text))
     {
         this.atributo            = entidad.buscaAtributo(MetodosAuxiliares.ajustaCadena(comboAtributo.Text, Constantes.tam));
         this.textBoxTipo.Text    = this.atributo.Tipo.ToString();
         this.textBoxLong.Text    = atributo.Longitud.ToString();
         this.textBoxIndicie.Text = MetodosAuxiliares.traduceIndice(atributo.Indice);
         this.textBoxDir.Text     = atributo.DirActual.ToString();
         this.textBox1.Text       = atributo.DirIndice.ToString();
         this.textBox2.Text       = atributo.DirSig.ToString();
     }
     else
     {
         this.textBoxTipo.Text    = "";
         this.textBoxLong.Text    = "";
         this.textBoxIndicie.Text = "";
         this.textBoxDir.Text     = "";
     }
 }
        private void ComboBoxAtributosHash_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            Entidad entidad;

            entidad = archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(this.comboBoxEntidad.Text, Constantes.tam));
            this.dataGridHash.Rows.Clear();
            foreach (Atributo atributo in entidad.Atributos)
            {
                if (MetodosAuxiliares.truncaCadena(atributo.Nombre).Equals(this.ComboBoxAtributosHash.Text))
                {
                    foreach (Indice indice in atributo.Indices)
                    {
                        for (int i = 0; i < ((HashEstatica)indice).Direcciones.Length; i++)
                        {
                            this.dataGridHash.Rows.Add(i.ToString(), ((HashEstatica)indice).Direcciones[i].ToString());
                        }
                    }
                    break;
                }
            }
        }
        private void DataGridHash_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int              i;
            Entidad          entidad;
            Atributo         atributo;
            HashEstatica     hash;
            DataGridViewCell cell;

            cell     = dataGridHash.Rows[e.RowIndex].Cells[0];
            entidad  = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(this.comboBoxEntidad.Text, Constantes.tam));
            atributo = entidad.buscaAtributo(MetodosAuxiliares.ajustaCadena(this.ComboBoxAtributosHash.Text, Constantes.tam));
            this.dataGridHashAuxiliar.Rows.Clear();
            i    = Int32.Parse(cell.Value.ToString());
            hash = ((HashEstatica)atributo.Indices.First());
            for (int j = 0; j < hash.Longitud; j++)
            {
                if (hash.Apuntadores[i, j] != -1)
                {
                    this.dataGridHashAuxiliar.Rows.Add(MetodosAuxiliares.truncaCadena(hash.Llaves[i, j]), hash.Apuntadores[i, j]);
                }
            }
        }
 public Secundario(string nombre, long dirAct, int tamañoArreglo, int longitud, long dirSig, bool esCadena) : base(nombre, dirAct, dirSig)
 {
     llaves           = new string[tamañoArreglo];
     this.direcciones = new long[tamañoArreglo];
     this.apuntadores = new long[tamañoArreglo, Constantes.tamNodoAux];
     for (int i = 0; i < llaves.Length; i++)
     {
         if (esCadena)
         {
             this.llaves[i] = MetodosAuxiliares.ajustaCadena("-1", longitud);
         }
         else
         {
             this.llaves[i] = "-1";
         }
         this.direcciones[i] = -1;
         for (int j = 0; j < Constantes.tamNodoAux; j++)
         {
             this.apuntadores[i, j] = -1;
         }
     }
 }
        private void ComboBoxAtributosForaneos_SelectedIndexChanged(object sender, EventArgs e)
        {
            Entidad entidad;

            entidad = archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(comboBoxEntidad.Text, Constantes.tam));
            this.dataGridSecundario.Rows.Clear();
            foreach (Atributo atributo in entidad.Atributos)
            {
                if (MetodosAuxiliares.truncaCadena(atributo.Nombre).Equals(this.comboBoxAtributosSecundarios.Text))
                {
                    foreach (Indice indice in atributo.Indices)
                    {
                        for (int i = 0; i < ((Secundario)indice).Llaves.Length; i++)
                        {
                            if (!MetodosAuxiliares.truncaCadena(((Secundario)indice).Llaves[i]).Equals("-1"))
                            {
                                this.dataGridSecundario.Rows.Add(MetodosAuxiliares.truncaCadena(((Secundario)indice).Llaves[i]), ((Secundario)indice).Direcciones[i]);
                            }
                        }
                    }
                    break;
                }
            }
        }
Example #22
0
        public void modificaRegistro(string llavePrimaria, List <string> datos, string directorio, string[] infoOriginal)
        {
            try
            {
                if (!this.registros.ContainsKey(datos[this.buscaIndiceClavePrimaria()]) | llavePrimaria.Equals(datos[this.buscaIndiceClavePrimaria()]))
                {
                    int      indiceLlavePrimaria;
                    string   archivoDat;
                    string   archivoIdx;
                    Registro registro1;
                    indiceLlavePrimaria = this.buscaIndiceClavePrimaria();
                    archivoDat          = directorio + "\\" + MetodosAuxiliares.truncaCadena(this.nombre) + ".dat";
                    archivoIdx          = directorio + "\\" + MetodosAuxiliares.truncaCadena(this.nombre) + ".idx";
                    if (this.atributos[indiceLlavePrimaria].Tipo.Equals('C'))
                    {
                        llavePrimaria = MetodosAuxiliares.ajustaCadena(llavePrimaria, this.atributos[indiceLlavePrimaria].Longitud);
                    }
                    registro1 = new Registro(this.registros[llavePrimaria].DirAct, datos);
                    this.registros.Remove(llavePrimaria);
                    this.registros.Add(datos[indiceLlavePrimaria], registro1);
                    int i;
                    i = 0;
                    string llaveOriginal;
                    string nuevallave;
                    foreach (Atributo atributo in this.atributos)
                    {
                        llaveOriginal = infoOriginal[i];
                        nuevallave    = datos[i];
                        switch (atributo.Indice)
                        {
                        case 2:
                            atributo.modificaIndicePrimario(llavePrimaria, datos[indiceLlavePrimaria], archivoIdx);
                            this.modificaLLaveForanea(this.dirActual, llaveOriginal, nuevallave, directorio);
                            break;

                        case 4:
                            atributo.modificaIndiceSecundario(infoOriginal[i], datos[i], registro1.DirAct, archivoIdx);
                            break;

                        case 5:
                            if (atributo.Tipo.Equals('C'))
                            {
                                llaveOriginal = MetodosAuxiliares.truncaCadena(llaveOriginal);
                                nuevallave    = MetodosAuxiliares.truncaCadena(nuevallave);
                            }
                            atributo.modificaHashEstatica(llaveOriginal, nuevallave, registro1.DirAct, archivoIdx);
                            break;
                        }
                        i++;
                    }
                    this.ajustaDireccionesRegistros();
                    foreach (Registro registro in this.registros.Values)
                    {
                        this.grabaRegistro(registro, archivoDat);
                    }
                }
                else
                {
                    MessageBox.Show("Se intento agregar un dato ya existente", "Error");
                }
            }
            catch (ArgumentException e)
            {
                MessageBox.Show(e.Message);
            }
        }
Example #23
0
        public void eliminarRegistro(string directorio, string llavePrimaria)
        {
            try
            {
                if (this.atributos[this.buscaIndiceClavePrimaria()].Equals('C'))
                {
                    llavePrimaria = MetodosAuxiliares.ajustaCadena(llavePrimaria, this.atributos[this.buscaIndiceClavePrimaria()].Longitud);
                }
                if (this.registros.ContainsKey(llavePrimaria))
                {
                    string   archivoDat;
                    string   archivoIdx;
                    Registro reg;
                    archivoDat = directorio + "\\" + MetodosAuxiliares.truncaCadena(this.nombre) + ".dat";
                    archivoIdx = directorio + "\\" + MetodosAuxiliares.truncaCadena(this.nombre) + ".idx";
                    if (this.atributos[this.buscaIndiceClavePrimaria()].Tipo.Equals('C'))
                    {
                        llavePrimaria = MetodosAuxiliares.ajustaCadena(llavePrimaria, this.atributos[this.buscaIndiceClavePrimaria()].Longitud);
                    }
                    else if (this.atributos[this.buscaIndiceClavePrimaria()].Tipo.Equals('E') | this.atributos[this.buscaIndiceClavePrimaria()].Tipo.Equals('D'))
                    {
                        llavePrimaria = MetodosAuxiliares.truncaCadena(llavePrimaria);
                    }
                    reg = this.registros[llavePrimaria];
                    if (!this.existeReferenciaForanea(this.dirActual, llavePrimaria))
                    {
                        this.registros.Remove(llavePrimaria);
                        int i;
                        i = -1;
                        foreach (Atributo atributo in this.atributos)
                        {
                            i++;
                            switch (atributo.Indice)
                            {
                            case 2:
                                atributo.eliminaIndicePrimario(llavePrimaria, archivoIdx);
                                break;

                            case 4:
                                atributo.elimminaSecundario(reg.Datos[i], reg.DirAct, archivoIdx);
                                break;

                            case 5:
                                atributo.elimminaHash(reg.Datos[i], reg.DirAct, archivoIdx);
                                break;
                            }
                            if (atributo.DirIndice == -1)
                            {
                                this.grabaAtributo(atributo);
                            }
                        }
                        this.ajustaDireccionesRegistros();
                        foreach (Registro registroAux in this.registros.Values)
                        {
                            this.grabaRegistro(registroAux, archivoDat);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Existen referencias foraneas a esta entidad por favor eliminelas antes", "Referencia Foranea detectada");
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error");
            }
        }
        private void entidades_Clicked(object sender, ToolStripItemClickedEventArgs e)
        {
            #region Entidades
            if (this.archivo != null)
            {
                switch (e.ClickedItem.AccessibleName)
                {
                case "Alta":
                    #region Alta
                    AltaEntidad altaEntidad = new AltaEntidad(archivo.Nombre);
                    if (altaEntidad.ShowDialog() == DialogResult.OK)
                    {
                        string nombre;
                        nombre = MetodosAuxiliares.ajustaCadena(altaEntidad.Nombre, Constantes.tam);
                        long       dir;
                        FileStream abierto;
                        abierto = new FileStream(archivo.Nombre, FileMode.Append);                                       //abre el archivo en un file stream
                        dir     = (long)abierto.Seek(0, SeekOrigin.End);                                                 //Calcula la direccion final del archivo y lo mete en un long
                        abierto.Close();                                                                                 //Cierra el file Stream
                        archivo.altaEntidad(nombre, dir, -1, -1, -1);                                                    //Da de alta la entidad
                        abierto = new FileStream(this.directorio + "\\" + altaEntidad.Nombre + ".dat", FileMode.Create); //Crea el archivo .dat de la entidad
                        abierto.Close();
                        abierto = new FileStream(this.directorio + "\\" + altaEntidad.Nombre + ".idx", FileMode.Create); //Crea el archivo .idx de la entidad
                        abierto.Close();
                        this.actualizaTodo();                                                                            //Actualiza todos los Data Grid
                    }
                    altaEntidad.Dispose();                                                                               //Eliminamos el objeto
                    #endregion
                    break;

                case "Modificar":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Modificar
                        ModificaEntidad modificaEntidad;
                        modificaEntidad = new ModificaEntidad(this.archivo);
                        if (modificaEntidad.ShowDialog().Equals(DialogResult.OK))
                        {
                            string original;
                            string nuevo;
                            archivo.modificaEntidad(MetodosAuxiliares.ajustaCadena(modificaEntidad.Entidad, Constantes.tam),
                                                    MetodosAuxiliares.ajustaCadena(modificaEntidad.Cambio, Constantes.tam));
                            original = this.directorio + "\\" + modificaEntidad.Entidad + ".dat";
                            nuevo    = this.directorio + "\\" + modificaEntidad.Cambio + ".dat";
                            File.Move(original, nuevo);
                            original = this.directorio + "\\" + modificaEntidad.Entidad + ".idx";
                            nuevo    = this.directorio + "\\" + modificaEntidad.Cambio + ".idx";
                            File.Move(original, nuevo);
                            this.actualizaTodo();
                        }
                        modificaEntidad.Dispose();
                        #endregion
                    }
                    break;

                case "Consulta":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Consulta
                        ConsultaEntidad consultaEntidad;
                        consultaEntidad = new ConsultaEntidad(this.archivo);
                        consultaEntidad.ShowDialog();
                        consultaEntidad.Dispose();
                        #endregion
                    }
                    break;

                case "Eliminar":
                    if (this.archivo.Entidades.Count > 0)
                    {
                        #region Eliminar
                        SeleccionEntidad eliminaEntidad;
                        eliminaEntidad = new SeleccionEntidad(this.archivo);
                        if (eliminaEntidad.ShowDialog().Equals(DialogResult.OK))
                        {
                            string nombreAuxiliar;
                            nombreAuxiliar = this.directorio + "\\" + eliminaEntidad.Entidad;
                            archivo.eliminaEntidad(MetodosAuxiliares.ajustaCadena(eliminaEntidad.Entidad, Constantes.tam), nombreAuxiliar);
                            actualizaTodo();
                        }
                        eliminaEntidad.Dispose();
                        #endregion
                    }
                    break;

                default:
                    MessageBox.Show("Opción incorrecta o no implementada", "Atención");
                    break;
                }
            }
            else
            {
                MessageBox.Show("Por favor abra una base de datos", "Error");
            }
            #endregion
        }
        private void registros_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            #region Registros
            if (this.archivo != null)
            {
                SeleccionEntidad  seleccionEntidad;
                SeleccionRegistro seleccionRegistro;
                switch (e.ClickedItem.AccessibleName)
                {
                case "Alta":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        AltaRegistro altaRegistro;
                        altaRegistro = new AltaRegistro(this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam)));
                        altaRegistro.obtenLllaves += new AltaRegistro.ObtenLlaves(this.obtenLllavesEntidad);
                        if (altaRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            this.archivo.altaRegistro(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam),
                                                      this.directorio, altaRegistro.Informacion);
                            this.actualizaTodo();
                        }
                        altaRegistro.Dispose();
                    }
                    seleccionEntidad.Dispose();
                    break;

                case "AltaSQL":
                    AltaRegistroSQL altaRegistroSQL;
                    altaRegistroSQL          = new AltaRegistroSQL(this.directorio);
                    altaRegistroSQL.altaSQL += new AltaRegistroSQL.AltaSQL(this.archivo.altaSQl);
                    altaRegistroSQL.ShowDialog();
                    this.actualizaTodo();
                    altaRegistroSQL.Dispose();
                    break;

                case "Modificar":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        Entidad entidad;
                        entidad           = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam));
                        seleccionRegistro = new SeleccionRegistro(entidad);
                        if (seleccionRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            ModificaRegistro modificaRegistro;
                            modificaRegistro = new ModificaRegistro(entidad, seleccionRegistro.ClaveDeBusqueda);
                            modificaRegistro.obtenLllaves += new ModificaRegistro.ObtenLlaves(this.obtenLllavesEntidad);
                            if (modificaRegistro.ShowDialog().Equals(DialogResult.OK))
                            {
                                this.archivo.modificaRegistro(seleccionEntidad.Entidad, seleccionRegistro.ClaveDeBusqueda, modificaRegistro.InfoOriginal, modificaRegistro.Datos, this.directorio);
                                this.actualizaTodo();
                            }
                        }
                        seleccionRegistro.Dispose();
                    }
                    seleccionEntidad.Dispose();
                    break;

                case "Consulta Primario":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        ConsultaRegistroPrimario consulta;
                        Entidad entidad;
                        entidad = this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam));
                        if (entidad.Valores.Count > 0)
                        {
                            consulta = new ConsultaRegistroPrimario(entidad);
                            consulta.Show();
                        }
                        else
                        {
                            MessageBox.Show("La entidad seleccionada no contiene registros", "Error");
                        }
                    }
                    break;

                case "Consultas SQL":
                    ConsultasSQL sql;
                    sql = new ConsultasSQL();
                    sql.consultaAtributosSelect      += new ConsultasSQL.ConsultaAtributosSelect(this.archivo.ConsultaAtributosSelect);
                    sql.consultaRegistrosSelectWhere += new ConsultasSQL.ConsultaRegistrosSelectWhere(this.archivo.ConsultaRegistrosSelectWhere);
                    sql.innerJoin += new ConsultasSQL.InnerJoin(this.archivo.InnerJoin);
                    sql.consultaAtributosSelectInnerJoin += new ConsultasSQL.ConsultaAtributosSelectInnerJoin(this.archivo.ConsultaAtributosSelectInnerJoin);
                    sql.consultaRegistrosSelectAnd       += new ConsultasSQL.ConsultaRegistrosSelectAnd(this.archivo.consultaRegistrosInnerJoinAnd);
                    sql.Show();
                    break;

                case "Eliminar":
                    seleccionEntidad = new SeleccionEntidad(this.archivo);
                    if (seleccionEntidad.ShowDialog().Equals(DialogResult.OK))
                    {
                        seleccionRegistro = new SeleccionRegistro(this.archivo.buscaEntidad(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam)));
                        if (seleccionRegistro.ShowDialog().Equals(DialogResult.OK))
                        {
                            this.archivo.eliminaRegistro(MetodosAuxiliares.ajustaCadena(seleccionEntidad.Entidad, Constantes.tam),
                                                         seleccionRegistro.ClaveDeBusqueda, this.directorio);
                            this.actualizaTodo();
                        }
                    }
                    seleccionEntidad.Dispose();
                    break;
                }
            }
            else
            {
                MessageBox.Show("Por favor abra una base de datos o cree", "Error");
            }
            #endregion
        }
        private void atributos_Clicked(object sender, ToolStripItemClickedEventArgs e)
        {
            #region Atributos
            if (this.archivo != null)
            {
                if (this.archivo.Entidades.Count != 0)
                {
                    #region Existen Entidades
                    switch (e.ClickedItem.AccessibleName)
                    {
                    case "Alta":
                        #region Alta
                        AltaAtributo altaAtributo;
                        altaAtributo = new AltaAtributo(this.archivo);
                        if (altaAtributo.ShowDialog().Equals(DialogResult.OK))
                        {
                            long       dir;
                            FileStream abierto;
                            abierto = new FileStream(archivo.Nombre, FileMode.Append); //abre el archivo en un file stream
                            dir     = (long)abierto.Seek(0, SeekOrigin.End);           //Calcula la direccion final del archivo y lo mete en un long
                            abierto.Close();                                           //Cierra el file Stream
                            archivo.altaAtributo(MetodosAuxiliares.ajustaCadena(altaAtributo.Entidad, Constantes.tam),
                                                 MetodosAuxiliares.ajustaCadena(altaAtributo.Nombre, Constantes.tam),
                                                 altaAtributo.Tipo, altaAtributo.Longitud, altaAtributo.Indice, dir, altaAtributo.DirIndice);
                            this.actualizaTodo();
                        }
                        altaAtributo.Dispose();
                        #endregion
                        break;

                    case "Modificar":
                        #region Modificar
                        ModificaAtributo modificaAtributo;
                        modificaAtributo = new ModificaAtributo(archivo);
                        if (modificaAtributo.ShowDialog().Equals(DialogResult.OK))
                        {
                            archivo.modificaAtributo(MetodosAuxiliares.ajustaCadena(modificaAtributo.Entidad, Constantes.tam),
                                                     MetodosAuxiliares.ajustaCadena(modificaAtributo.Atributo, Constantes.tam),
                                                     MetodosAuxiliares.ajustaCadena(modificaAtributo.Nombre, Constantes.tam),
                                                     modificaAtributo.Tipo, modificaAtributo.Longitud, modificaAtributo.Indice, modificaAtributo.DirIndice);
                            this.actualizaTodo();
                        }
                        modificaAtributo.Dispose();
                        #endregion
                        break;

                    case "Consulta":
                        #region Consulta
                        ConsultaAtributo consultaAtributo;
                        consultaAtributo = new ConsultaAtributo(this.archivo);
                        consultaAtributo.ShowDialog();
                        consultaAtributo.Dispose();
                        #endregion
                        break;

                    case "Eliminar":
                        #region Eliminar
                        EliminarAtributo eliminarAtributo;
                        eliminarAtributo = new EliminarAtributo(this.archivo);
                        if (eliminarAtributo.ShowDialog().Equals(DialogResult.OK))
                        {
                            this.archivo.eliminaAtributo(MetodosAuxiliares.ajustaCadena(eliminarAtributo.Entidad, Constantes.tam),
                                                         MetodosAuxiliares.ajustaCadena(eliminarAtributo.Atributo, Constantes.tam));
                            this.actualizaTodo();
                        }
                        eliminarAtributo.Dispose();
                        #endregion
                        break;

                    default:
                        MessageBox.Show("Opción incorrecta o no implementada", "Atención");
                        break;
                    }
                    #endregion
                }
                else
                {
                    MessageBox.Show("Por favor Agregue Entidades primero", "Imposible");
                }
            }
            else
            {
                MessageBox.Show("Por favor cree una base de d   atos primero", "Error");
            }
            #endregion
        }