Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Key Violation no esta duplicada (https://www.clubdelphi.com/foros/showthread.php?t=54622)

chinosoft 25-03-2008 19:36:27

Key Violation no esta duplicada
 
Holas otra vez pidiendo ayuda...

tengo un problema de violacion de clave (Key Violation).

En un Formulario tengo un DataSource y un DBGrid y en el grid listo los
pedidos de un cliente o los pendientes.

Cuando quiero agregar un nuevo registro abro otro formulario, al cual le conencto todos los campos con el DataSource del Formulario Principal con controles DBEdits.

Todo muy lindo, pero al momento de hacer el post... CHAN error de Key violation...

La clave no se repite eso estoy seguro :eek::eek::eek:.

Si alguien puede saber que le ocurre al sistema se lo agradeceria

Código:

// Hago el post o eso intento
FrmPanelCliente->DSListado->DataSet->Post();
DMDatos->CDSTrabajo->ApplyUpdates(0);
// Llamo a la transaccion
 DMDatos->Grabar();

desde ya muchas gracias!

juanelo 25-03-2008 19:47:36

Que tal,
Creo que tu error esta en que estas dando Post (bajas los cambios o inserciones) y luego haces un ApplyUpdates del ClientDataset que intenta nuevamente hacer las operaciones de insercion y/o modificacion.
Saludos

chinosoft 25-03-2008 19:57:42

Probe comentar las dos lineas de a una por ves y me sigue dando el mismo error...

luego deje el Guardar() solo y tambien me da el mismo error...

Gracias igual por la ayuda!

juanelo 25-03-2008 20:02:51

Puedes indicar cual(es) es(son) los campos que conforman tus indices y si son unicos o no.
Gracias

chinosoft 25-03-2008 20:12:38

Tiene un solo campo clave

lo asigno en el evento OnNewRecord del ClientDataSet

Código:

DMDatos->CDSTrabajo->FieldByName("NUMERO")->AsInteger = DMDatos->getID("TRABAJO");

juanelo 25-03-2008 20:16:59

Ok, eso es ent CDS, pero en la tabla de la base de datos como está conformado el o los indices y si es o son unicos.
Saludos

chinosoft 25-03-2008 20:24:57

En la tabla tengo a NUMERO como clave primaria y ID_CLIENTE como clave forania

chinosoft 25-03-2008 20:29:48

Ya esta! se me habia corrompido la tabla! :X la volvi a definir y anda todo de 10! gracias por el consejo del post y el ApplyUpdates.

Solo deje el ApplyUpdates y la transaccion Guardar().

Muchas gracias de enserio!


La franja horaria es GMT +2. Ahora son las 14:01:29.

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