none
COMO GENERAR FOLIO CONSECUTIVO EN VB NET Y SQL SERVER?? RRS feed

  • Pregunta

  • Buenas tardes,

    tengo tiempo tratando de resolver mi problema pero no he podido solucionarlo. Tengo un campo en un textbox en donde capturo un folio, el folio consiste en la fecha actual y después el número que sigue. Me gustaría poder hacer que el número se pusiera automáticamente por día.

    Por ejemplo el día de hoy 20 de febrero 2017 200217-1, 200217-2, 200217-3, etc. Mañana 21 de febrero que empiece 210217-1, 210217-2, 210217-3. La fecha actual la paso de un datetimepicker al textbox, como puedo hacer para añadir el número automáticamente según el número de compras por día y empezar desde 1 cada día.

    No entiendo como sacar el número de sql server y reiniciar el contador por día

    Gracias por adelantado


    martes, 21 de febrero de 2017 2:27

Respuestas

  • No, no tienes que hacer un SELECT MAX. El MAX se usa cuando quieres el máximo de varios valores. Pero aquí no tienes varios valores, sino un ÚNICO valor por cada fecha. Así que haces un SELECT...WHERE. En el WHERE pones la fecha para la que estás buscando el consecutivo, y si está bien hecho, solo debería haber un único registro para esa fecha, por lo que tiene que devolverte un solo valor (salvo la primera vez, que no devolverá nada y tendrás que meter el 1), por lo que tomas directamente ese valor devuelto, no tiene ningún sentido hacerle un MAX.
    miércoles, 22 de febrero de 2017 7:30
  • En el servidor SQL, añade una tabla con dos campos, que sean la fecha (dia mes año), y el consecutivo.

    Cuando tengas que generar el número en el textbox, toma la fecha y busca en la tabla un registro que tenga ese valor en la columna fecha. Si no existe, creas el registro, le pones 1 en el consecutivo, y devuelves 1. Si el registro existe, tomas el consecutivo, lo incrementas, y lo vuelves a salvar, y devuelves ese valor incrementado.

    martes, 21 de febrero de 2017 7:52

Todas las respuestas

  • En el servidor SQL, añade una tabla con dos campos, que sean la fecha (dia mes año), y el consecutivo.

    Cuando tengas que generar el número en el textbox, toma la fecha y busca en la tabla un registro que tenga ese valor en la columna fecha. Si no existe, creas el registro, le pones 1 en el consecutivo, y devuelves 1. Si el registro existe, tomas el consecutivo, lo incrementas, y lo vuelves a salvar, y devuelves ese valor incrementado.

    martes, 21 de febrero de 2017 7:52
  • Que tal Alberto,

    Antes que nada gracias por tu respuesta,

    tengo la idea de como hacer lo que me propones, más no entiendo como aplicarla en código, en mi tabla SQL tengo un campo clave con autoincremento, tengo que usar un SELECT MAX en un query dentro de mi DataTable del DataSet?

    miércoles, 22 de febrero de 2017 0:27
  • No, no tienes que hacer un SELECT MAX. El MAX se usa cuando quieres el máximo de varios valores. Pero aquí no tienes varios valores, sino un ÚNICO valor por cada fecha. Así que haces un SELECT...WHERE. En el WHERE pones la fecha para la que estás buscando el consecutivo, y si está bien hecho, solo debería haber un único registro para esa fecha, por lo que tiene que devolverte un solo valor (salvo la primera vez, que no devolverá nada y tendrás que meter el 1), por lo que tomas directamente ese valor devuelto, no tiene ningún sentido hacerle un MAX.
    miércoles, 22 de febrero de 2017 7:30