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 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; } }
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); } }
private void Anterior_Click(object sender, EventArgs e) { indice--; actualizaLabel(); textBoxDato.Text = MetodosAuxiliares.truncaCadena(atributos.Pop()); }