Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Duplicidad de registros (https://www.clubdelphi.com/foros/showthread.php?t=94143)

jilc1111 24-08-2019 04:54:04

Duplicidad de registros
 
Saludos a todos.

Tengo una base de datos SQL Server 2017 la cual gestiono desde una aplicacion desarrollada en Delphi 2010.

En mi base de datos tengo una tabla Facturas que contiene entre otros los siguientes campos:

ID BIGINT (Obtiene su valor de una secuencia)
CLIENTE VARCHAR(20)
FECHA DATE
PREFIJO CHAR(4)
NUMERO BIGINT (este campo obtiene su valor de otra tabla que controla el consecutivo de según el prefijo)
TOTAL MONEY

El campo ID es la llave primaria y los campos PREFIJO y NUMERO conforman una llave única.

Adicionalmente tengo un procedimiento almacenado que inserta registros en esta tabla.

Por alguna razón que desconozco se estan insertando "registros duplicados" desde la aplicación.
Es decir, se graba una factura, la aplicación despues de ejecutar el procedimiento de inserción genera un reporte en pdf que el usuario imprime y posteriormente se inserta otro registro con datos distintos (CLIENTE, TOTAL) pero los mismos PREFIJO y NUMERO.

Aclaración. En la base de datos solo persiste uno de los dos registros pero la aplicación permite generar al momento de la inserción los dos reportes con todos los datos como si ambos registros existieran el la base de datos.

He revisado los datos y no hay saltos en el consecutivo ID.

Es como si la base de datos retrocediera en el tiempo despues de insertar el primer registro.

Espero haber sido claro en mi explicación y que alguien pueda darme una luz sobre este tema.

newtron 24-08-2019 09:44:24

Eso tiene toda la pinta de ser un error del código y me temo que poco te vamos a poder ayudar. Yo no he trabajado nunca con SQL Server pero, si no encuentras el problema, imagino que podrás crear una regla en la base de datos para que cuando se duplique por esos campos de un mensaje de error. De esa manera podrías chequear en qué momento falla.


Saludos

jilc1111 24-08-2019 16:57:28

Gracias por tu respuesta.

No creo que sea un error en la programacion pues la aplicación viene funcionando de forma correcta hace mas de un año y no se han realizado modificaciones que puedan causar esto. Lo único que hice es migrar la base de datos de SQL Server 2012 a SQL Server 2017.

Aquí comenzaron los problemas.

Casimiro Notevi 24-08-2019 18:48:26

Si tienes una clave única "prefijo+número" y se repiten, está claro que no es una clave única.

jilc1111 25-08-2019 03:09:00

Gracias por responder.

Si es una clave única (PREFIJO, NUMERO).

Tal vez no fui lo suficientemente claro.

La cuestión es que se crea un registro PREFIJO+NUMERO, el usuario imprime un documento físico y por alguna razón en el futuro se inserta otro registro con datos totalmente distintos pero con el mismo PREFIJO+NUMERO pero sólo uno de los dos persiste en la base de datos, es como si el primer registro nunca hubiese existido.

Como lo mencioné en mi primer comentario, el ID generado por la secuencia no tiene saltos.

Casimiro Notevi 25-08-2019 11:29:17

Pues alguien hace un update.


La franja horaria es GMT +2. Ahora son las 08:44:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi