Cita:
Empezado por Bauhaus1975
No sé a que te refieres con eliminar
|
Quise decir eliminar o actualizar. En ambos casos es necesario que el proveedor identifique al registro en cuestión mediante uno o varios campos. Normalmente es por el campo de llave primaria cuando UpdateMode es upWhereKeyOnly, pero siempre y cuando dicho campo tenga la bandera
pfInKey. ¿Ya revisaste la propiedad
ProviderFlags de ese campo en ambos conjuntos de datos?
Respecto al depurador, cuando ocurra la excepción abre la ventana
Call Stack (pila de llamadas) la cual te mostrará cómo fueron ejecutándose las rutinas una tras otra hasta llegar al punto de la excepción. El elemento superior de esa lista es la rutina más actual o reciente (donde ahora está detenido el programa, vaya), la cual fue llamada por la segunda de la lista, y ésta a su vez por la tercera, etc.
Dando doble clic sobre alguna de ellas, te mostrará el punto exacto del código fuente donde esa rutina llamó a la que le sigue arriba. En alguna de las primeras, es muy probable que encuentres una sentencia como:
Código Delphi
[-]DatabaseError(SRecordChanged);
.
Con eso también puede indagarse qué validación no se cumplió en TDataSetProvider o alguna otra clase asociada, para que la excepción SRecordChanged fuera lanzada.
Espero haber aclarado un poco el asunto, por favor indícanos tus dudas y avances.
Saludos.
Al.
