none
Como generar Codigo para un Producto RRS feed

  • Pregunta

  • Para no tener que colocar e inventar un codigo de producto como podria hacer que mediante un boton me genere un codigo de 5 o 8 digitos incluyendo una letra al inicio.

    Segun la imagen este caso es para entradas, Podria ser E02459 los numeros aleatorios sin repetirse con otras entradas, como podria hacer eso, o ya sea crear un codigo de barras, con la opcion de imprimirlo para luego pegarlo en el producto.

    Segun mi ejemplo, (imagen) Me gustaria Generar el codigo de entrada o Producto o que recomiendan ya que al final debe mostrarmelos en un tabla de stocks los movimientos de los productos, entro salio si retorno la informacion se actualiza.

    Gracias

    miércoles, 27 de abril de 2016 19:08

Respuestas

  • Hola,

    Cierto, eso ya depende que como lo quieres implementar.

    TextBox1.Text = String.Concat("E",generarCodigo())

    Y solo cambiaría esto :

            While generado.Length <= 4
                generado += randon.Next(0, 9).ToString()
            End While

    En fin, solo te muestro la lógica para que tengas una idea.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta AcuTau jueves, 28 de abril de 2016 13:31
    miércoles, 27 de abril de 2016 21:20

Todas las respuestas

  • Hola,

    Lo malo de generar códigos con números aleatorios, es que tienes que hacer la validación, consultando en la base de datos si ya existe. Puedes tomar la fecha como referencia, pero te saldrá más extenso.

    ToString("ddMMyy") = 270416
    ToString("hhmmss") 022239

    O sino crear un método el cuál tienes que verificar antes de registrar si ya existe uno igual :

       Private Function generarCodigo() As String
    
            Dim randon As New Random
            Dim generado As String = String.Empty
    
            While generado.Length <= 5
                'Primera es LETRA donde  A = 65 y Z = 90
                If generado.Length = 0 Then
                    generado += Chr(randon.Next(65, 90))
                End If
                generado += randon.Next(0, 9).ToString()
            End While
    
            Return generado
    
        End Function

        Private Function existeCodigo(ByVal codigo As String) As Boolean
            'Aqui obtienes el código y verificas si existe en la BD
            'Si existe TRUE sino FALSE
            'Usa executeScalar
        End Function

    Y en el botón :

       Private Sub btnGenerar_Click(sender As Object, e As EventArgs) Handles btnGenerar.Click
    
            Dim codigo As String = generarCodigo()
    
            'Miéntras el código exista
            While existeCodigo(codigo) = True
                'Generamos un nuevo código
                codigo = generarCodigo()
            End While
    
            TextBox1.Text = generarCodigo()
    
        End Sub

    Y el resultado, será parecido :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 27 de abril de 2016 19:51
  • ajaja haces reir con la magia, bueno ya voy a revisarlo pero no quiero que sean letras al azar sino la letra E para entradas S para Salidas P para productos de cada formulario en este caso es para Entradas entonces E######
    miércoles, 27 de abril de 2016 21:08
  • Hola JackJJ,

    Creo que estás teniendo problemas de concepto y en otra pregunta que hiciste en este foro trate de alinearte un poco con el tema de los almacenes. El registro de entrada y salida se soporta por un documento que usualmente se le denomina parte de entrada y parte de salida donde se consignan los productos y cantidades que ingresan y salen del almacén, dicho documento debería tener un correlativo y el mismo se genera tal y como generarías un correlativo para los documentos de venta: factura, boleta de venta, etc.

    El código que requieres -según el título del hilo- mencionas que es para el producto, ¿un código de producto distinto para la entrada y salida? O yo estoy entendiendo mal o es que no estás tomando el camino correcto.
    miércoles, 27 de abril de 2016 21:19
  • Hola,

    Cierto, eso ya depende que como lo quieres implementar.

    TextBox1.Text = String.Concat("E",generarCodigo())

    Y solo cambiaría esto :

            While generado.Length <= 4
                generado += randon.Next(0, 9).ToString()
            End While

    En fin, solo te muestro la lógica para que tengas una idea.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta AcuTau jueves, 28 de abril de 2016 13:31
    miércoles, 27 de abril de 2016 21:20
  • Perfecto.

    La parte del ver si existe me da problemas en el executeScalar porque dice que la cnexion esta cerrada lo dejado de momento apartado


    • Editado AcuTau miércoles, 27 de abril de 2016 21:50
    miércoles, 27 de abril de 2016 21:43
  • Me parece que mejor seria sin boton y al momento de presionar Nuevo automaticamente salga

    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click
            Call Limpiar()
            txtCodigoE.Enabled = False
            txtCodigoE.Text = String.Concat("E", generarCodigo())
    ..

    miércoles, 27 de abril de 2016 22:02