Uniqueness of index --- is violated

Tengo problema que no puedo resolver y necesito su ayuda.
Antes mi estado:
FoxPro9 sp2,(experiencia 3,4meses). Windows XP
sistema multiusuario,(coneccion a DB shared), set deleted on,
mi problema es que me sale 'uniqueness of index nombre_ is violated' de la siguiente situacion.
Me entro a un form(frmListCliente) donde muestra listado(grid) de clientes
es de tblClientes, lleva su Cod(primary key, no autoincrement, es Char) que luego en proceso
relaciono con tblTelefono( ejemplo, n num de teléfono a un cliente)
Esto relaciono cuando abro frmListCliente con 'set relation...'
En el mismo form. Tengo btn para nuevo(insert into...), modificar(uso replace y cursorsetpro..set multi..) y eliminar(locate y delete) dicha clientes seleccionadoen grid.
En modificación anda perfecto. En eliminar también, solo que luego de eliminar un cliente de id 9001 por ejemplo. Y intento adicionar nuevo cliente con el mismo id 9001, asigna pero en instante me aparece el error de uniqueness...
Estuve leyendo varios artículos, y con lo que me entendí es que con llave primario, ni por más que vuelva a ser record Marcado como eliminado, hasta reindexe index,( id 9001 del ejemplo), se permanece como registro activo y no permite duplicar por primary's.
Leí también que es medio arriesgoso reindexar tablas dentro de proceso, por la perdida de las relaciones. Y claro, como estoy haciendo a multiusuario (a mi manera) toda la conexión es en shared y .. Bueno. Espero comentarios y una idea, aconsejo
si me falto información avisame

1 respuesta

Respuesta
1
Primero que todo debes saber que no puedes insertar valores repetidos en un campo con clave primaria, debido a eso es que se te presenta el error que mencionas anteriormente, aún cuando elimines el registro de manera lógica te seguirá mostrando el mismo error porque el registro aún existe en la tabla, la solución es que generes el campo clave con auto incremento para evitar valores repetidos o una función que haga algo similar o bien crear una rutina de mantenimiento que quite los registros eliminados de la tabla (obviamente debes utilizar el comando Pack) y vuelva a generar todos los índices de la tabla.
Cualquier cosa me comentas.
Tome la forma del momento de guardar un Nuevo, vuelvo a set deleted off, y comparo si existe. En caso Sí, guio a que salga de sistema y utilice parche para mantenimiento(limpieza).
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas