Autogenerado

Buen día experto cuando elimino un registro con delete on luego pack y vuelvo a ingresar a mi form y quiero guardar un registro nuevo pero muestra este mensaje "se ha violado la unicidad del indice campo_item"... El item es un campo autogenerado que se crea de esta manera pero solo muestra este error cada vez que lo elimino el registro definitivamente con pack, como puedo solucionar este problema. Gracias
REPLACE ap_item with padl(reccount(),10,"0")

2 Respuestas

Respuesta
1
Lo que esta pasando es que al crear tu tabla definiste un campo único donde no se puedan existir datos duplicados y al querer guardar un dato esta duplicado, para borara toda la tabla debes usar ZAP abrirla en modo exclusivo y aplicar el comando luego cada vez que guardes un valor en ese campo debes estar seguro de que el valor no es repetido avisame como te fue
Hola ya probé elimine todos los registros y volví a ingresar pero solo muestra error cuando elimino un archivo que esta entre 0000000001 y 000000010, creo que el reccount recorre toda la tabla y encuentre ese vacío es por eso que tengo el problema, luego para seguir probando le quite el indice Principal y lo cambie a Normal y si funciono hay otra manera de autogenerar un código
Se le tabla
set order to codigo
go Bottom
ultimo=codigo+1
Antes de grabar se debe hacer esta consulta
Respuesta
1
Creo que el problema es el reccount(), mira haz lo siguiente ese padl ponlo antes del replace en un messagebox para ver que numero te esta generando y de ahí vamos viendo como solucionar tu problema.
Hola gracias por responder coloque este código
=messagebox("Item numero"+padl(reccount(),10,"0")+"","mensaje del sistema")
Y me dio este mensaje "0000000102"
Debes verificar si ese código 0000000102 ya esta dentro de tu base porque si es así entonces por eso te esta devolviendo el error de unicidad y pues en ese caso te tocara buscar otra manera de asignar el valor al indice
Hola tengo desde el 0000000001 hasta el 0000000080 y falla solo cuando elimino un registros con el pack elimine el 0000000004 y recién empieza el problema
Haz la prueba asignando los códigos manualmente para ver si así te graba, osea el replace hazlo así replace ap_item with "0012345" y así un par de veces con códigos diferentes y ve si te graba sin ningún problema

Añade tu respuesta

Haz clic para o