Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Key Violation (https://www.clubdelphi.com/foros/showthread.php?t=2542)

Tonio 28-07-2003 17:27:21

Key Violation
 
Uso dos tablas, exactamente iguales en campos, longitud, tipo etc., el contenido varía, en una hago un 'append', agrego un dato, hago 'post' y funciona, en la otra hago lo mismo y me dice 'Key Violation'.

He buscado y rebuscado diferencias, pero no hallo ninguna.

De hecho son 5 tablas, - lo del principo de dos tablas es que lo he hecho aparte con dos para probar,- quiero emplear el mismo Form para presentarlas en pantalla, por lo que al pulsar un botón cambio TableName e IndexName y aparecen en pantalla como yo deseo, cada una con sus datos, pero a la hora de agregar, dos funcionan y tres no.

El código es

Table1.Append;
Table1.FieldByName('Palabra').AsString := Edit1.Text;
Table1.FieldByName('Definicion').AsString := RE1.Text; // RE1 es un RichEdit
Table1.Post; // Aquí da el error.

Incluso escribiendo sobre la DBGrid y el DBMemo, al moverme en la tabla, hace lo mismo.

Sinceramentre mi mosqueo es que al ser un código tan simple me falle.
Gracias de antemano.
Un saludo
Tonio

marcoszorrilla 28-07-2003 17:40:51

Hola Tonio:

Eso quiere decir que tienes un campo declarado como clave primaria y por algún motivo se repite.

Intenta abrir la tabla con otra herramienta y revisa a ver lo que contiene, el error tiene que venir por ahi.

Un Saludo.

Tonio 28-07-2003 18:25:08

Gracias Marcos por la rápida y acertada respuesta.

Siguiendo tu consejo, he quitado dos campos que tenía en cada una de las tablas, uno incremental y otro numérico, y funciona.

Los campos no los usaba para nada en concreto, solamente al rellenarlas me hacian falta para contar el número de datos que introducia.

Ahora a indagar porqué ocurría.

Gracias de nuevo y un saludo.
Tonio

marcoszorrilla 28-07-2003 18:57:26

Hola otra vez Tonio:

Creo que el autonumérico no sería, pues el solo se va incrementando y normalmente no se repetirá nunca.

Pero el otro campo que dices que has quitado, es posible que también fuese índice de tipo único, y sino introduces ningún número la segunda vez que intentes dar un alta ya estará repetido.

Y si introduces números entonces tendrás que tener cuidado de que no se repitan, por ejemplo usando un contador que puedes guardar en otra tabla y que irías incrementando en 1.

Otra solución sería mediante SQL.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 11:35:21.

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