none
Manejo de números consecutivos automáticos RRS feed

  • Pregunta

  • Buenas noches: Tengo una aplicación en red que crea números de registros (series) consecutivos de forma automática, es decir, cuando el operador da click en el botón NUEVO (nuevo registro), éste toma la parte entera del último registro, el cual esta compuesto por una combinación de año, mes, N° de computador, N° de operador y el número correlativo del registro: 00001, (algo así como ésto: 201711D11-00001), le suma uno y guarda éste nuevo N° de registro junto con la fecha/hora en una tabla auxiliar para reservarlo hasta el momento que el operador da click en GUARDAR. Ese nuevo N° de registro se guarda luego en las tablas correspondientes (4) que componen toda la información que se necesita.

    El problema que se me presenta es que en ocasiones se duplica el N° de registro (sólo la parte entera), es decir, si el último registro es 201711D11-00836 el próximo registro duplicado se ve así 201711A5-00836, no duplica la parte de la serie, sólo el número que ha sido incrementado.

    Para hacer la selección del último registro ingresado utilizo Select Top 1 ordenado de forma Descendente, el cual me asegura que se tomará sólo el último registro y así luego tomar la parte entera y sumarle uno.

    Ya leí la información en éste enlace https://social.msdn.microsoft.com/Forums/es-ES/3bdc7fdb-9578-41d1-a558-b7cfd4fe9d28/manejo-de-consecutivos-en-aplicaciones?forum=vbes donde recomiendan éste método pero a mi me da éstas duplicaciones de vez en cuando, no hay un patrón que me pueda ayudar a solucionarlo.

    Si alguien tiene la solución agradecería mucho su ayuda


    José Alberto Lira

    • Cambiado Enrique M. Montejo jueves, 23 de noviembre de 2017 12:25 Pregunta relacionada con el acceso a datos con Microsoft Access.
    martes, 21 de noviembre de 2017 3:15

Respuestas

  • Hola:

    Mira el siguiente enlace
    https://social.msdn.microsoft.com/Forums/es-ES/c893cc45-3680-46f0-a410-655b0b76b75f/ayuda-consecutivo-factura?forum=vbes

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio martes, 21 de noviembre de 2017 15:57
    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 5:58
  • Lo mejor seria crear una tabla correlativos conforme vas ingresando este se va actualizando con un trigger

    y siempre tomas el correlativo actual ,  y el trigger solo actualizara al finalizar el insert. 


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 13:52
  • Supongo que el error se debe a la reserva, que pasa si un usuario ingresa se aplica la reserva y a la vez otro usuario ingresa antes que usuario1 guerde, supongo que ambos quedarán con la misma reserva, me quivoco?

    Tal vez debas evaluar tomar la numeración al cargar directamente.

    Saludos

    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 15:37

Todas las respuestas

  • Hola:

    Mira el siguiente enlace
    https://social.msdn.microsoft.com/Forums/es-ES/c893cc45-3680-46f0-a410-655b0b76b75f/ayuda-consecutivo-factura?forum=vbes

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio martes, 21 de noviembre de 2017 15:57
    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 5:58
  • Lo mejor seria crear una tabla correlativos conforme vas ingresando este se va actualizando con un trigger

    y siempre tomas el correlativo actual ,  y el trigger solo actualizara al finalizar el insert. 


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 13:52
  • Supongo que el error se debe a la reserva, que pasa si un usuario ingresa se aplica la reserva y a la vez otro usuario ingresa antes que usuario1 guerde, supongo que ambos quedarán con la misma reserva, me quivoco?

    Tal vez debas evaluar tomar la numeración al cargar directamente.

    Saludos

    • Marcado como respuesta JoséAlberto martes, 19 de junio de 2018 15:17
    martes, 21 de noviembre de 2017 15:37
  • Gracias Carlos, ya leí la publicación, no había contemplado ese método pero hoy lo pruebo y les digo como me fue

    José Alberto Lira

    martes, 21 de noviembre de 2017 19:57
  • Hola Marcelo: Cada vez que un operador hace click en NUEVO envío el N° nuevo del registro a una caja (tabla) con la fecha y hora, si otro operador hace click en NUEVO luego de éste, tomo ese último N° de registro le sumo uno y lo coloco en la misma tabla, ésto para "reservar" ese nuevo N° de registro con su fecha y hora correspondiente.

    De esta forma evito que si el segundo operador GUARDA el registro antes que el primero, ya el primero tiene reservado su número, fecha y hora (así no me quedan los registros con horas disparejas), si el primero cancela el registro, es decir, no guarda el registro y ya el segundo guardó el otro registro entonces queda ese "hueco" en la numeración, eso no me afecta en nada, no hay exigencias del cliente en ese aspecto.

    Con cada cancelación que hagan los operadores elimino el N° de registro nuevo que ya había sido "reservado" y así queda la tabla con el último N° de registro GUARDADO.


    José Alberto Lira

    • Propuesto como respuesta Pablo Rubio miércoles, 22 de noviembre de 2017 16:09
    • Votado como útil Enrique M. Montejo jueves, 23 de noviembre de 2017 12:20
    martes, 21 de noviembre de 2017 20:05
  • Hola Dane: Eso es lo que estoy haciendo, la diferencia es que no utilizo un trigger, el correlativo lo hago con código, estoy trabajando con Access y OleDb.

    José Alberto Lira

    martes, 21 de noviembre de 2017 20:07