/**Verificar si la clave primaria fue modificada en caso de que no se haya modificado, sobrescribir el registro en la misma direccion, pasar a otro procedimiento. */ public bool actualizaRegistro(CBloque nuevo, long posN) { bool res; if (nuevo.ComparateTo(bloqueOriginal) == 0) { getArchivo().AbrirArchivo(); nuevo.setSigBlo(bloqueOriginal.getSigBlo()); getArchivo().EscribeBloque(nuevo, dirBO); getArchivo().CerrarArchivo(); res = false; } else { if ((res = buscaBloqueRep(ent, bloqueOriginal, nuevo)) == false) { getArchivo().AbrirArchivo(); eliminaBloque(ref indPrim, bloqueOriginal); if (indPrim.getCabBloques() == -1) eliminaIndicePrimario(ent, indPrim); long posB = getArchivo().ENDF(); getArchivo().CerrarArchivo(); AltaOSI(ent, nuevo, posB); List<CNodoEntidad> lR = new List<CNodoEntidad>(); List<CBloque> lB; lR = buscaRelacionesEnt(ent); if(lR.Count > 0) foreach (CNodoEntidad nE in lR) { lB = new List<CBloque>(); getArchivo().AbrirArchivo(); dameBloquesDatos(ref lB, nE, bloqueOriginal, ent); foreach (CBloque nB in lB) { nB.setClaveExt(bloque.dameClave()); getArchivo().EscribeBloque(nB, nB.getDir()); } getArchivo().CerrarArchivo(); } } } return (res); }
/**Inserta el bloque de datos, accediendo a la estructura de datos implementada en el archivo*/ public int insBloque(CIndice ind, CBloque nuevo, long posB) { CBloque bAux, bAnt = null; long ptrAux, ptrAnt = -1; int band = -1; ptrAux = ind.getCabBloques(); while (ptrAux != -1) { bAux = getArchivo().leerBloque(ptrAux, nuevo.getTamBlo()); if ((band = nuevo.ComparateTo(bAux)) > 0) { ptrAnt = ptrAux; bAnt = bAux; bAnt.setTamBlo(nuevo.getTamBlo()); ptrAux = bAux.getSigBlo(); } else break; } if (band == 0) return 0; else if (ptrAux == ind.getCabBloques()) { ind.setCabBloques(posB); getArchivo().EscribeIndicePrimario(ind); } else { bAnt.setSigBlo(posB); getArchivo().EscribeBloque(bAnt, ptrAnt); } nuevo.setSigBlo(ptrAux); getArchivo().EscribeBloque(nuevo, posB); return (band); }
private void tablaDatos_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { posReg = e.RowIndex; long sigB = -1; if (edicion == false) dirBO = -1; for (int i = 0; i < tablaDatos.Rows.Count; i++) if (i != e.RowIndex) { tablaDatos.Rows[i].ReadOnly = true; for (int j = 0; j < tablaDatos.Columns.Count; j++) tablaDatos.Rows[i].Cells[j].Style.BackColor = Color.Gray; } if (tablaDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null && nuevoReg != true && edicion == false) nuevoReg = true; if (nuevoReg == false && tablaDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null && edicion != true) { bloqueOriginal = creaBloqueDatos(e.RowIndex); getArchivo().buscaBloque(bloqueOriginal,indPrim.getCabBloques(), tamBloque, ref dirBO, ref sigB); bloqueOriginal.setSigBlo(sigB); edicion = true; } }
private void btEditarReg_Click(object sender, EventArgs e) { DataGridViewSelectedRowCollection reg = tablaDatos.SelectedRows; long sigB = 0; if (reg.Count == 1) { tablaDatos.ReadOnly = false; index = reg[0].Index; for (int i = 0; i < tablaDatos.Rows.Count; i++) if( i != index) tablaDatos.Rows[i].ReadOnly = true; bloqueAux = creaBloqueDatos(reg[0].Index); getArchivo().buscaBloque(bloqueAux,ent.getApCabDatos(),tamBloque,ref dir, ref sigB); bloqueAux.setSigBlo(sigB); band = true; btNuevoReg.Enabled = false; btGurdarReg.Enabled = true; btEliminarReg.Enabled = false; btEditarReg.Enabled = false; btEditarReg.BackColor = Color.Gray; btEliminarReg.BackColor = Color.Gray; btGurdarReg.BackColor = Color.Turquoise; } else if( reg.Count > 1 ) MessageBox.Show(" Seleccione un solo registro","Error", MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(" Seleccione todo el registro para editarlo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }