none
Generar Nro de factura RRS feed

  • Pregunta

  • Saludos, de que forma se puede generar el nro de factura para cada impresión.
    Ejemplo: 001 - 0000235
    (BD SQL + Factura en Crystal)

    Gracias.

    • Editado T2014 sábado, 15 de febrero de 2014 5:58
    sábado, 15 de febrero de 2014 5:57

Respuestas

  • Hola puedes hacer algo como esto.

    Public Shared Function GenerarCodigo() As String
            Dim codigo As String
            Using cn As SqlConnection = Conexion.Conectar("default")
                cn.Open()
                Using cmd As SqlCommand = cn.CreateCommand
                    cmd.CommandText = "SELECT ISNULL(MAX(idPersona) + 1, 1) AS idPersona FROM Personas"
                    codigo = CStr(cmd.ExecuteScalar)
                End Using
                Return Format(Val(codigo), "000000")
            End Using
        End Function


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Marcado como respuesta T2014 sábado, 15 de febrero de 2014 19:11
    sábado, 15 de febrero de 2014 16:25
  •     Public Shared Function GenerarCodigo() As String
            Dim codigo As String
            Using conectarBD As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                conectarBD.Open()
                Using cmd As SqlCommand = conectarBD.CreateCommand
                    cmd.CommandText = "SELECT ISNULL(MAX(IdVenta) + 1, 1) AS IdVenta FROM Venta"
                    codigo = CStr(cmd.ExecuteScalar)
                End Using
                Return Format(Val(codigo), "0000000")
            End Using
        End Function

    Asi logro realizar el nro de factura.
    Y en un Crystal Reportes con parametro de ID lo genero con otra funcion pero que me devuelve el ultimo registro.

    Saludos.

    • Marcado como respuesta T2014 jueves, 20 de febrero de 2014 16:05
    jueves, 20 de febrero de 2014 4:03

Todas las respuestas

  • Guarda en el servidor SQL el número de la última factura. Cada vez que necesites generar un número nuevo, inicia una transacción, recupera el último número, increméntalo, y guarda el número incrementado así como la factura generada con ese número. Después, haz el Commit de la transacción. De esa manera (gracias a la transacción) garantizas que siempre se asigna un número consecutivo a la factura incluso aunque se produzca un error en el proceso, además de que la transacción te proporciona el bloqueo para evitar que dos puestos de trabajo tomen el mismo número en caso de que coincidan a la vez en el mismo proceso.
    sábado, 15 de febrero de 2014 6:38
  • Hola puedes hacer algo como esto.

    Public Shared Function GenerarCodigo() As String
            Dim codigo As String
            Using cn As SqlConnection = Conexion.Conectar("default")
                cn.Open()
                Using cmd As SqlCommand = cn.CreateCommand
                    cmd.CommandText = "SELECT ISNULL(MAX(idPersona) + 1, 1) AS idPersona FROM Personas"
                    codigo = CStr(cmd.ExecuteScalar)
                End Using
                Return Format(Val(codigo), "000000")
            End Using
        End Function


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Marcado como respuesta T2014 sábado, 15 de febrero de 2014 19:11
    sábado, 15 de febrero de 2014 16:25
  • Hola y gracias por visitar el foro.

    Quedamos atentos a tus comentarios sobre esta consulta.

    Saludos,

    Miguel

    MSDN/TechNet Soporte Comunidades

    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 17 de febrero de 2014 21:36
    Moderador
  •     Public Shared Function GenerarCodigo() As String
            Dim codigo As String
            Using conectarBD As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                conectarBD.Open()
                Using cmd As SqlCommand = conectarBD.CreateCommand
                    cmd.CommandText = "SELECT ISNULL(MAX(IdVenta) + 1, 1) AS IdVenta FROM Venta"
                    codigo = CStr(cmd.ExecuteScalar)
                End Using
                Return Format(Val(codigo), "0000000")
            End Using
        End Function

    Asi logro realizar el nro de factura.
    Y en un Crystal Reportes con parametro de ID lo genero con otra funcion pero que me devuelve el ultimo registro.

    Saludos.

    • Marcado como respuesta T2014 jueves, 20 de febrero de 2014 16:05
    jueves, 20 de febrero de 2014 4:03