none
Numero de comprobante fiscal (NCF)

    Pregunta

  • Buenas a todos

    Programo en vb.net

    Esta consulta me genera el Numero de comprobante fiscal (NCF). Quiero resaltar que esta consulta funciona muy bien y esta nítida.

    Public Sub GenerarNCF_Facturas_A_Consumidores_Finales()
            Try
                Using cn As New SqlConnection(cadenaConexion)
                    Dim consultaSql As String = "SELECT ISNULL(LEFT(MAX(ncf), 11) + RIGHT('00000000' + CONVERT(varchar(8), MAX(CONVERT(int, RIGHT(ncf, 8))) + 1), 8), 'A010010010200000001')  As maximo FROM TblaNCFConsumidorFinal"
                    Using cmd3 As New SqlCommand(consultaSql, cn)
                        cn.Open()
    
                        txtNCF.Text = cmd3.ExecuteScalar().ToString()
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    En la consulta solamente se incrementa los últimos 8 números, por ejemplo:

    00000001

    00000002

    00000003

    Yo lo único que quiero es: almacenar esta parte de la consulta anterior 'A010010010200000001' en una variable global.

    Mi variable global está declarada así:

    Public NCFConsumidorFinal As String = "A010010010200000001"

    Lo que yo intento es sustituir este trozo de código de la consulta anterior "A010010010200000001" por NCFConsumidorFinal.

    El problema se ve complejo desde mi punto de vista, lo he intentado, pero no me funciona. 

    miércoles, 28 de diciembre de 2016 17:56

Respuestas

  • Ahora que si lo que quieres es solo la parte de la consulta, entonces cambia

    'A010010010200000001'

    por

    '" + NCFConsumidorFinal + '"

    y tu consulta queda:

     Dim consultaSql As String = "SELECT ISNULL(LEFT(MAX(ncf), 11) + RIGHT('00000000' + CONVERT(varchar(8), MAX(CONVERT(int, RIGHT(ncf, 8))) + 1), 8), '" + NCFConsumidorFinal + "')  As maximo FROM TblaNCFConsumidorFinal"

    OJO despues de: 8), es comilla sencilla y luego doble y despues de NCFConsumidorFinal +  es comilla doble y luego sencilla.

    Si te sirve maracala como respuesta

    Saludos 

    lunes, 2 de enero de 2017 23:54

Todas las respuestas

  • EliannyRD,

    La verdad no entiendo lo que requieres. La consulta de selección retorna la secuencia siguiente del código y según entiendo ese valor necesitas asignarlo a la variable NCFConsumidorFinal, ¿entendí bien? de ser así ¿qué problemas tienes en la asignación?



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 28 de diciembre de 2016 20:48
  • Gracias, pero entendiste bien

    Yo lo único que quiero es: almacenar esta parte de la consulta anterior 'A010010010200000001' en una variable global.

    Mi variable global está declarada así:

    Public NCFConsumidorFinal As String = "A010010010200000001"

    Es decir que la consulta en vez de que tenga este trozo de código "A010010010200000001" tenga NCFConsumidorFinal, es decir la constante .

    El problema   es que la consulta no reconose la constante (NCFConsumidorFinal)

    observa este código 

     Public Sub GenerarNCF_Facturas_A_Consumidores_Finales()
            Try
                Using cn As New SqlConnection(cadenaConexion)
                    Dim consultaSql As String = "SELECT ISNULL(LEFT(MAX(ncf), 11) + RIGHT('00000000' + CONVERT(varchar(8), MAX(CONVERT(int, RIGHT(ncf, 8))) + 1), 8), 'NCFConsumidorFinal')  As maximo FROM TblaNCFConsumidorFinal"
                    Using cmd3 As New SqlCommand(consultaSql, cn)
                        cn.Open()
    
                        txtNCF.Text = cmd3.ExecuteScalar().ToString()
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub



    Public NCFConsumidorFinal As String = "A010010010200000001"

    NCFConsumidorFinal: viene siendo una constante. 




    • Editado EliannyRD jueves, 29 de diciembre de 2016 0:16
    miércoles, 28 de diciembre de 2016 21:00
  • EliannyRD,

    Lo siento, debo de ser yo quien no logra entender lo que requieres, debe ser algo simple pero no doy con el punto de duda. 

    -------------------------------------------------------------------------------------------------

    Es decir que la consulta en vez de que tenga este trozo de código "A010010010200000001" tenga NCFConsumidorFinal, es decir la constante .

    El problema   es que la consulta no reconose la constante (NCFConsumidorFinal)

    -------------------------------------------------------------------------------------------------

    No entiendo, si pudieses darle mayor claridad lo agradeceré o quizá algún compañero logre comprender tu requerimiento y echarte una mano. Por cierto, NCFConsumidorFinal no es una constante.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 29 de diciembre de 2016 17:17
  • esto que vez en la consulta anterior: "A010010010200000001", es una contaste, es decir que no varia en el código de la consulta SQL.

    Que es lo que yo quiero: es sustituir A010010010200000001 por: NCFConsumidorFinal

    Public NCFConsumidorFinal As String = "A010010010200000001"

    pero ta bien, si no se puede, no se puede............

    gracias...

     


    • Editado EliannyRD jueves, 29 de diciembre de 2016 21:45
    jueves, 29 de diciembre de 2016 21:12
  • Elianny yo he resuelto un caso parecido de la siguiente manera:

            Dim folio_s, NCini, NCfin As String
            Dim folio_a As Integer

            folio_s = Right(NCFConsumidorFinal, 8)
            NCini = Left(NCFConsumidorFinal,(Len(NCFConsumidorFinal)-8)
            folio_a = Val(folio_s)
            folio_a = folio_a + 1
            folio_s = folio_a.ToString("00000000")
            NCfin = NCini + folio_s

    Espero te ayude.

    Si te sirve la respuesta no olvides marcarla como correcta

    lunes, 2 de enero de 2017 23:47
  • Ahora que si lo que quieres es solo la parte de la consulta, entonces cambia

    'A010010010200000001'

    por

    '" + NCFConsumidorFinal + '"

    y tu consulta queda:

     Dim consultaSql As String = "SELECT ISNULL(LEFT(MAX(ncf), 11) + RIGHT('00000000' + CONVERT(varchar(8), MAX(CONVERT(int, RIGHT(ncf, 8))) + 1), 8), '" + NCFConsumidorFinal + "')  As maximo FROM TblaNCFConsumidorFinal"

    OJO despues de: 8), es comilla sencilla y luego doble y despues de NCFConsumidorFinal +  es comilla doble y luego sencilla.

    Si te sirve maracala como respuesta

    Saludos 

    lunes, 2 de enero de 2017 23:54
  • Gracias por contestar gasgdl2

    Disculpa por no haber contestado, tenia unos días que no entraba al foro. 

    El problema está resuelto 100x%

    sinceramente, muchas gracias, realmente daba este caso por perdido y gracias a ti se puedo resolver. 

    Que señor te siga Bendiciendo..........................

    jueves, 5 de enero de 2017 1:55