Ver Mensaje Individual
  #1  
Antiguo 20-03-2017
alopete alopete is offline
Miembro
 
Registrado: sep 2007
Posts: 95
Reputación: 17
alopete Va por buen camino
Error de PK al hacer ApplyUpdates en Delphi+DBExpress

Buenas tardes,

Trabajo con Delphi y utilizo componentes DBExpress para acceder a la BBDD. Tengo una tabla cuya Primary Key está compuesta por los campos PEDIDO (integer) y POS (char(4)), y para trabajar sobre esa tabla tengo un SQLQuery, un DataProvider y un ClientDataSet.

Tengo un formulario de Delphi en el que me muestra las líneas de un pedido y permito añadirlas y eliminarlas. Al eliminarlas (ClientDataSet.Delete) recalculo el campo POS (ClientDataSet.Edit-ClientDataSet.Post) de las líneas posteriores a la borrada. Por ejemplo, si tengo las posiciones 1º-'0001', 2º-'0002', 3º-'0003', 4º-'0004' y 5º-'0005' y borro la '0003' tendrían que quedar 1º-'0001', 2º-'0002', 4º-'0003', 5º-'0004'.

El problema que tengo es que al hacer ApplyUpdates sobre el ClientDataSet me da error de Primary Key. He estado poniendo trazas en el código, como por ejemplo mostrando mensajes del UpdateKind en el evento BeforeUpdateRecord de mi DataProvider, y me he dado cuenta de que se lía porque hace un UPDATE antes de la DELETE y eso genera conflictos con la PK. No sé cómo controlar el orden de las sentencias, ¿alguna sugerencia?

Gracias de antemano.
Un saludo.
Responder Con Cita