PDA

Ver la Versión Completa : Recuperar Error en ApplyUpdates


Neeruu
10-07-2014, 22:12:35
Hola a todos...

Tengo una tabla en cache que se le cargan datos...

Imaginemos esto, supongamos una tabla Clientes, donde tenemos el ID, y el Nombre del Cliente...
Para generar ese ID, busco el mayor numero de ID en la tabla de Clientes y le sumo 1...

Ahora resulta que tengo que cargar varios clientes, dentro de una misma transaccion.. por lo que la tabla clientes esta en cached...
Recupero mi siguiente ID de clientes y a partir de aca, como la tabla esta en cached, y para la misma transaccion mi numero de ID siempre va a ser el mismo....

Cuando realizo el applyUpdates, me da error de clave duplicada... (hasta aca es tal cual necesito que ande...)

Ahora mi pregunta es, como puedo ir corriendo el ID a medida que me voy recuperando del error de clave duplicada...

Yo lo estaba haciendo en el Evento OnUpdateError de esta forma:


With EIBO_ISCError(E) do
begin
Case ErrCode of
335544665: //PRIMARY KEY
//if ErrorCodes[ErrorCodes.Count - 1] = '2' then //PRIMARY KEY
begin
spNewCodigo.Close;
spNewCodigo.Open;

DataSet.Edit;
DataSet['ID'] := spNewCodigo.FieldByName('ID').AsInteger;
DataSet.Post;
UpdateAction := uaRetry;
end;
335544345: //Lock conflict on no wait transaction
begin
Sleep(100); //Esperamos un tiempo para que termine la transaccion.
UpdateAction := uaRetry;
end
end;
end;


Pero me dice que el registro no puede editarse.... y si le saco el edit, me dice que el registro no esta en Edit or Insert Modes....

Saludos...

Neeruu
10-07-2014, 23:12:52
Algún Ejemplo de como recuperarme de un error de clave duplicada en una query en cached....

Gracias!!!!

Al González
14-07-2014, 19:14:47
Hola.

Dos preguntotas:

1. ¿Qué componentes usas?

2. ¿Qué mensaje de error te aparece cuando intentas el Edit?

:)

Neeruu
18-07-2014, 14:12:32
Hola Al González

Los componentes son los IbObject

El dataset llega al edit en estado browser!...

Y cuando quiero hacer el edit para corregir el numero de pieza el mensaje de error es el siguiente:

"DataSet not in edit or insert mode"

Alguna idea de como recuperar una clave duplicada en cached?

Saludos.