martes, 19 de marzo de 2024

REGISTROS REPETIDOS

 

Se infringe la unicidad del índice empresa1

Síntomas

Durante la reparación de índices o durante la actualización aparece el mensaje

Se infringe la unicidad del índice empresa1

Causas

Cuando aparece el mensaje de error Se infringe la unicidad del índice -nombre del índice- quiere decir que en la tabla existen registros repetidos incorrectos, puesto que el índice principal debe ser único. Por ejemplo:

  • No puede haber dos artículos con el mismo código (tabla Articulo, índice principal "Codigo").
  • Ni dos albaranes de la misma empresa con el mismo número y letra (tabla C_albven, índice principal "Empresa+Numero+Letra").

Solución

Podemos solucionar este problema de dos formas:

  • En el apartado Procesos de las Utilidades del supervisor, programa Util.exe, se encuentra el proceso "Eliminar registros repetidos". Al ejecutar este proceso hay que seleccionar la base de datos de la tabla, la tabla y escribir la expresión del índice. Por ejemplo, para la tabla D_albcom la expresión del índice principal es "Empresa+Proveedor+Numero+STR(Linia, 7)". Aparecerán los registros repetidos. Con el botón "Borrar todos" podremos borrar los registros incorrectos.
  • También, podemos hacer la reparación manualmente desde las Utilidades del supervisor con las indicaciones siguientes:
  1. Entrar en la opción Bases de datos y seleccionar la ruta de la base de datos a la que pertenece la tabla que vamos a reparar.
  2. Marcar la tabla y pulsar el botón Contenido. Activar la opción Ventana de comandos en la parte inferior de la pantalla.
  3. Para ver los registros repetidos hay que ejecutar la siguiente instrucción:

SELECT empresa + proveedor + numero + STR(linia, 7) as clave, COUNT(*) as conta FROM d_albcom WHERE !DELETED() GROUP BY 1 HAVING conta > 1 TO PRINTER NOCONSOLE

# Con la cláusula TO PRINTER NOCONSOLE se realiza la impresión del resultado en papel.

Esta consulta mostrará la lista de claves repetidas. Después para cada clave deberemos realizar un filtro de la tabla para examinar los registros repetidos y borrar los que no procedan.

SET FILTER TO Empresa+Proveedor+Numero+STR(Linia, 7) = "clave"

0 comentarios :

Publicar un comentario