Delphi - Como recuperar autonumerico despes de borrar, ect.

 
Vista:

Como recuperar autonumerico despes de borrar, ect.

Publicado por Hiber Tadeo Moreno (7 intervenciones) el 19/05/2003 05:44:52
Hola amigos, quisiera saber como le puedo hacer como en algunos programas de Tickets ,que al agregar me produce numeros consecutivos ( Autonumericos) lo siguiente:

1.-Si el usuario elimina el registro y despues pincha en agregar ,recuperar ese numero de Ticket borrado.

2.- Si el usuario Pincho en agregar ( Se genero un nuevo numero de ticket) y despues se arrepintio y dio click en cancelar.
recuperar ese numero que ya no se utilizo, para cuando pinche agregar despues.

estas dudas las he visto en programas de facturas y tickets para que me entiendan mejor.
A mi se me ocurrio un SQL pero hasta ahi me quede.

Select Min(Numfactura) ect.

alguien me podria explicar o mejor si tiene un ejemplo poder pasarmelo.

Muchisimas gracias.

Hiber

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como recuperar autonumerico despes de borrar, e

Publicado por Ernesto De Spirito (706 intervenciones) el 19/05/2003 07:49:16
Algunos sistemas de bases de datos reservan el número de los campos automuéricos "para siempre" y no permiten reinicializarlo. Una solución es no usar un campo autonumérico sino buscar el último número, por ejemplo con una consulta SQL:

SELECT MAX(numfactura) FROM facturas

Le sumas 1 al último número de factura obtenido con la consulta de arriba y así obtienes el número a usar en la próxima alta. Eso funcionará bien en un sistema monopuesto, pero en una sistema en red donde puedas generar facturas desde varios puestos de trabajo, tendrás colisiones (dos o más aplicaciones concurrentes pretendiendo usar el mismo número), las que se puede resolver de varias formas, siendo la más simple de ellas poner un índice único por número de factura para detectar claves duplicadas, y cuando se produce un error de clave duplicada en el alta de una factura se le suma 1 al número de factura con el cual se intentó el alta y se vuelve a intentar, y así hasta que deje de dar error por clave duplicada (normalmente al primer reintento se solucionará el problema).

En el caso de un servidor de base de datos, normalmente se deja la asignación del número de factura a un trigger, liberando a las aplicaciones de tratar esta cuestión, la que se resolverá en el servidor. Si se necesitara el número asignado, por ejemplo para dar altas en una tabla de detalles, he visto que se usa un procedimiento almacenado (stored procedure) al que se le pasa los valores de los campos para que éste realice el alta del registro, y por supuesto, devolverá el número de factura asignado, pero por lo general no se opta por esta solución sino por el uso de un autonumértico independiente al número correlativo de factura, el que se pueda escrutar directamente una vez realizada el alta del registro.

Espero que mis comentarios te sirvan.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar