PDA

Ver la Versión Completa : Validacion llave con ClientDataset


JOMABRI
22-06-2004, 23:13:31
Hola foro, estoy actualizando 1 tabla de ciudades(codigo y nombre), la llave es el codigo. utilizo en query dbexpress, DataSetProvider, ClientDataSet y 1 Grid.

Anteriormente cuando el usuario digitaba codigos duplicados en el ClientDataSet, salia error de KEY VIOLATION, pero no se que parametro modifique por error y ya el error no me sale. Que debo hacer para que me valide de nuevo??


Gracias.

guillotmarc
23-06-2004, 00:25:37
Hola.

Verifica que la llamada a ApplyUpdates la haces con el parámetro 0 y no -1.

Saludos.

JOMABRI
23-06-2004, 14:17:32
Gracias Marc, pero no es en el applyUpdates. Es asi:

En el grid y ClientDataSet Tienes:

Codigo Nombre
1 Madrid


Y digitas en nuevo registro con el codigo 1 quedando el grid asi:

Codigo Nombre
1 Madrid
1 Barca

Cuando doy TAB en el campo nombre del segundo registro, me debe generar una excepcion de KEY VIOLATION.



Gracias.


Hola.

Verifica que la llamada a ApplyUpdates la haces con el parámetro 0 y no -1.

Saludos.

guillotmarc
23-06-2004, 18:13:10
Hola.

Pero es que el Key Violation es una excepción que se provoca en la base de datos, y al insertar un registro en el ClientDataset, no se envia a la base de datos hasta que no se llame al ApplyUpdates (momento en el que puede saltar esta excepción).

Para lo que quieres hacer, creo que tendrias que poner un ApplyUpdates en el evento AfterPost del ClientDataset. De esta forma cada vez que das de alta un registro, lo envias automaticamente a la base de datos, con lo que se comprueban la unicidad de los índices y puede saltar esa excepción.

Saludos.