Error de concurrencia en la edición de los datos.

Hola Gente,

De repente me encuentro con este problema, cuando quiero editar o eliminar un registro. (adjunto imagen).

Se han encontrado los siguientes problemas:
Error de concurrencia en la edición de los datos.

Mientras Ud. editaba esta información, la misma fue modificada por alguien más. Para garantizar consistencia sólo podrá guardar cambios luego de reiniciar la edición.
Más info…

en el ci tengo el siguiente codigo:

function evt__form_grilla_modificacion($datos)
{

        $this->cn()->modificar_grilla($datos);
        $this->cn()->grabar();

}

function evt__cuadro_grilla__eliminar($seleccion)
{

        $this->cn()->eliminar_grilla($seleccion);
        $this->cn()->grabar();

}

en el cn:

function modificar_grilla($registro)
{
$filtro[‘id_grilla’]=$registro[‘id_grilla’];
$evolucion = $this->dep(‘dr_prueba’)->tabla(‘grilla’)->get_filas($filtro);

  if(count($evolucion) ==1)
  {
     $id_grilla = $evolucion[0]['x_dbr_clave'];
     $this->dep('dr_prueba')->tabla('grilla')->modificar_fila($id_grilla,$registro);
  }

}

function eliminar_grilla($registro)
{
$filtro[‘id_grilla’]=$registro[‘id_grilla’];
$evolucion = $this->dep(‘dr_prueba’)->tabla(‘grilla’)->get_filas($filtro);
if(count($evolucion) ==1)
{
$id_grilla_resultado = $evolucion[0][‘x_dbr_clave’];
$this->dep(‘dr_prueba’)->tabla(‘grilla’)->eliminar_fila($id_grilla);
}
}

function grabar()
{
try{
abrir_transaccion();
$this->dep(‘dr_prueba’)->sincronizar();
$prueba = $this->dep(‘dr_prueba’)->tabla(‘prueba’)->get();
$this->s__id_prueba = $pacientes[‘id_prueba’];
$this->dep(‘dr_prueba’)->resetear();
cerrar_transaccion();
}catch(taba_error $e){
abortar_transaccion();
throw $e;
}
}

Realmente no eh podido detectar el error, es mas tengo otras operaciones funcionando con codigos medianamente iguales.

que puede ser???

Saludos y muchas gracias


modificacion.png

modificacion.png

Lo que puedo analizar, es que al modificar y eliminar estás tocando las tablas y al guardar sincronizar también,
yo pienso que el sincronizar toma automáticamente la modificación y la eliminación, como lo véo se está realizando doblemente la operación.

el modificar bastaría con procesar_filas (); y el guardar es el que tiene el sincronizar()

Saludos

Hola Josefina,

te hago una consulta, veo que estas manejando la transaccion de forma manual, le desactivaste el manejo de transacciones al DR via el AP?, esto puede llegar a estar jodiendo.

Por otro lado, el campo bmi pareciera ser float… detectamos algunos inconvenientes en casos donde Postgres redondea dichos valores o los trunca a una cantidad de bits especifica y que pueden terminar generando este tipo de inconvenientes. No siempre sucede, solo en casos muy puntuales… igualmente aun tengo que encontrar una solucion para este caso.

Saludos

Hola Ricardo,

Le eh dado vueltas a este problema, pero al fin!!! efectivamente todo surge a partir del campo bmi que es float, ne eh prestado atencion pero le estaba guardando con demaciados deciamales por ejemplo bmi= 0.082345, la solucion fue bmi= 0.08 (guardar con 2 decimales).

saludos y muschisimas gracias!

Hola Josefina,

era una de las posibilidades, el tema con los float es que precision se les da (en caso de tomar el truncado como posible solucion), creo que ahi radica el problema mas que nada.
En tu caso con un par de decimales alcanza… pero en el caso de Toba tiene que ser algo mas generico.

Saludos