Ver Mensaje Individual
  #1  
Antiguo 10-07-2014
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Reputación: 17
Neeruu Va por buen camino
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...
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita