FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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. |
|
|
|