none
Mostrar un valor consecutivo como número de registro RRS feed

  • Pregunta

  • Espero me puedan ayudar, cree una aplicación en visual basic 2015 con una base el número de orden es un valor único pero no esta automático, se coloca manual el número ya que la secuencia que requería en aquel momento empezó desde el 350, ahora estoy por el 11000 pero quiero que se genere de forma automática es decir que al guardar coloque el siguiente número.
    martes, 10 de abril de 2018 22:22

Todas las respuestas

  • Creo que aquí tendrias varias opciones ya sea tener un proceso que te consulte antes del guardado, el valor maximo de ese número y sumarle + 1, esto se puede hacer en tu codigo o si usas procedimientos almacenados en tu SP, o bien manejar ese campo como identity autoincremental en tu base de datos



    Carlos Aldi


    • Editado Carlos Aldi martes, 10 de abril de 2018 23:35
    martes, 10 de abril de 2018 23:14
  • En términos generales, eso de sumar 1 al máximo no funciona según lo encontrará en el 99.999% de los lugares en Internet.  Esto se debe a que no garantiza un valor único y válido en sistemas multiusuario.

    Como ejemplo le muestro una conversación super agitada que tuvimos hace poco:  Sugerencias para manejar un campo incremental y consecutivo por llave foránea en una tabla

    Como verá, el asunto es mucho muy complicado.

    En su caso, la recomendación más sana que le puedo dar es:  Recrear la tabla con un autonumérico.  Luego llena los registros en la nueva tabla.  Puede conservar los ID's.  En SQL Server usted puede usar la sentencia Set Identity_Insert <nombre de tabla> On;, luego hacer la copia de los registros viejos, luego apagar el IDENTITY_INSERT.

    Si no, lo invito a ver la conversación en el detalle.  Si ha de usar MAX() tiene que usar una transacción serializable y utilizar una tabla auxiliar de mutexes y básicamente programar el procedimiento almacenado de inserción de registros como si estuviera programando multi hilos en C++ o C#.


    Jose R. MCP
    Code Samples

    martes, 10 de abril de 2018 23:28