Comunidad de diseño web y desarrollo en internet online

Problemas con autoincrement en mysql o alguna solucion parecida.

Citar            
MensajeEscrito el 07 Feb 2012 04:05 pm
Hola gente, mi consulta se trata de lo siguiente:

Tengo un sistema el cual toma el numero del autoincrement para poder imprimir este numero en unas boletas, pero cuando elimino un registro de al medio el autoincrement sigue adelante y deja este espacio vacio, al ser boletas tienen que llevar un orden por lo que he leido no se puede recorrer el autoincrement y asignar un numero de en medio si se puede asignar el ultimo si lo elimino pero no en el medio, para que se entienda mejor pongo mi ejemplo:

"Tengo la venta 13,14,15 pero la persona 14 no tiene el dinero o se le olvido traerlo.. elimino esa venta, pero la boleta me sale con numero 13 y 15 cuando deberia ser 13 y 14, existe alguna posibilidad de poder realizar esto?"

Alomejor no se puede hacer con autoincrement pero si se puede solucionar de alguna otra forma. Saludos.

Por virusbyte

5 de clabLevel



 

msie
Citar            
MensajeEscrito el 07 Feb 2012 04:18 pm
Podrias detallar un poco mas por que necesitas ese orden. Si utilizas PHP o solo mysql.

Ya que si lo necesitas para boletas estas deben tener un identificador unico y si este numero va cambiando cada vez que se elimina una venta no serviria de mucho.

Si necesitas un contador utiliza COUNT en el siguiente enlace sale ejemplos: [url=http://dev.mysql.com/doc/refman/5.0/es/counting-rows.html][/url]

Saludos

Por Lord_war

8 de clabLevel



Genero:Masculino  

Programador web

chrome
Citar            
MensajeEscrito el 07 Feb 2012 04:30 pm
Mira lo que sucede es lo siguiente, estoy creando un sistema de boletas con php y mysql mas puntos de ventas, lo que pasa es que cuando creo un ticket de venta para ser pagado en caja este sale con un numero X, luego el administrador puede cancelar el ticket y convertirlo en boleta. Lo que sucede es que si hago mas de una venta y la persona se arrepiente de comprar la numeracion queda de esta forma:

- compra 1, numero de ticket 10, numero de boleta 10
- compra 2, numero de ticket 11, numero de boleta 11

si la compra 1 no se realiza, la elimino del sistema por ende la boleta al aceptar la compra 2 deberia ser con el numero 10 aunque el ticket sea el numero 11, pero lo que sucede que al eliminar la compra 1 la siguiente compra al crear la boleta esta sale con el numero 11 dado que el sistema toma el numero de boleta de un autoincrement, como se sabe las boletas tienen que llevar un orden de numeracion para efectos de impuesto. Lo que hice fue quitar el atributo auto_increment de la numeracion de la boleta, lo que necesito saber es como recorrer los registros de la tabla y cuando exista un "agujero" ejemplo (1,2,3,5,6,7), asignar el numero 4 en vez del numero 8 a la numeracion de la boleta.

Saludos.

Por virusbyte

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Feb 2012 04:55 pm
Tal como lo explicas entiendo que estás creando una boleta aunque no se haya confirmado la validez del ticket y solo después de haber creado la boleta el usuario tiene la posibilidad de volver atrás el ticket y por tanto te queda una boleta "huérfana".

Visto así es un error de diseño. No debería crear ninguna boleta a menos que el ticket haya sido efectivamente confirmado.

Por otro lado no veo la necesidad de correlacionar secuencialmente números de tickets y números de boletas. La numeración de las boletas podría ser autoincremental y la de los tickets también y no estar sicronizadas siempre y cuando mantengas la relación uno a uno con ellas.

Aparte, y siempre según lo que he entendido, el método que estás usando no es tolerante a fallos. Imagina el caso en que se cambia el punto de venta comenzando una nueva numeración, no puedes poner en cero el campo autoimcremental para que la cuenta comience de nuevo.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.