Пример #1
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");
            }
        }
Пример #2
0
 private void actualizaLabel()
 {
     if (indice == 1)
     {
         Anterior.Enabled = true;
     }
     if (!Siguiente.Enabled)
     {
         Siguiente.Enabled = true;
     }
     if (Aceptar.Visible)
     {
         Aceptar.Visible = false;
     }
     if (indice == 0)
     {
         Anterior.Enabled = false;
     }
     if (indice == entidad.Atributos.Count - 1)
     {
         Siguiente.Enabled = false;
         Aceptar.Visible   = true;
     }
     textBoxAtributo.Text  = MetodosAuxiliares.truncaCadena(entidad.Atributos[indice].Nombre);
     textBoxTipo.Text      = entidad.Atributos[indice].Tipo.ToString();
     textBoxIndice.Text    = MetodosAuxiliares.traduceIndice(entidad.Atributos[indice].Indice);
     this.textBoxLong.Text = entidad.Atributos[indice].Longitud.ToString();
     if (entidad.Atributos[indice].Indice == 3)
     {
         if (comboDato != null)
         {
             comboDato.Dispose();
             if (this.Controls.Contains(comboDato))
             {
                 this.Controls.Remove(comboDato);
             }
             comboDato = null;
         }
         List <string> llaves;
         comboDato = new ComboBox();
         string ent;
         ent    = "";
         llaves = this.obtenLllaves(entidad.Atributos[indice].DirIndice, ref ent);
         if (llaves.Count > 0)
         {
             this.textBoxDato.Visible = false;
             comboDato.Location       = textBoxDato.Location;
             comboDato.Size           = textBoxDato.Size;
             //Aqui se manda llamar el metodo para llenar los datos del combo box
             this.Controls.Add(this.comboDato);
             this.comboDato.SelectedIndexChanged += new EventHandler(this.ComboBox1_SelectedIndexChanged);
             foreach (string llave in llaves)
             {
                 this.comboDato.Items.Add(llave);
             }
         }
         else
         {
             MessageBox.Show("No se encuentran valores para hacer referencia con la entidad: " + ent + " Por favor de de alta registros en esa tabla", "Error");
             this.DialogResult = DialogResult.Cancel;
             this.Close();
         }
     }
     else if (entidad.Atributos[indice].Indice != 3 && !this.textBoxDato.Visible)
     {
         this.Controls.Remove(comboDato);
         comboDato.Dispose();
         this.textBoxDato.Visible = true;
     }
 }
Пример #3
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);
            }
        }
Пример #4
0
 private void Anterior_Click(object sender, EventArgs e)
 {
     indice--;
     actualizaLabel();
     textBoxDato.Text = MetodosAuxiliares.truncaCadena(atributos.Pop());
 }