Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recuperar Error en ApplyUpdates (https://www.clubdelphi.com/foros/showthread.php?t=86268)

Neeruu 10-07-2014 22:12:35

Recuperar Error en ApplyUpdates
 
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:

Código SQL [-]
  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.


La franja horaria es GMT +2. Ahora son las 01:08:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi