none
Dar de alta un registro RRS feed

  • Pregunta

  • Hola

    Estoy trabajando con VB 6.0 y SQL Server 2008

    Al tratar de dar de alta un registro me da un error que declare la @Nombre

    Conexión

    Public cn As ADODB.Connection
    Public rs As ADODB.Recordset
    
    Public Function Conectar() As Boolean
        'TODO: Add 'Conectar' body here.
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
        rs.CursorLocation = adUseClient
        cn.Open "Provider=SQLNCLI10;Server=DESKTOP-SRPQ8P3\Kuky;Database=PruebaVB6;Trusted_Connection=yes;"
    End Function
    
    
    Public Sub Desconectar()
        'TODO: Add 'Desconectar' body here.
        On Local Error Resume Next
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub


    Public Sub Create(entity As persona)
        'TODO: Add 'Create' body here.
        On Error GoTo tratarError
        Dim cmd As New Command
        Conectar
        With cmd
            .ActiveConnection = cn
            .CommandText = "INSERT INTO Personas(Nombre, Direccion, Telefono) VALUES(@Nombre, @Direccion, @Telefono)"
            .CommandType = adCmdText
            .Parameters.Append .CreateParameter("@Nombre", adVarChar, adParamInput, 100, entity.Nombre)
            .Parameters.Append .CreateParameter("@Direccion", adVarChar, adParamInput, 150, entity.Direccion)
            .Parameters.Append .CreateParameter("@Telefono", adVarChar, adParamInput, 50, entity.Telefono)
            .Execute
        End With
        On Error GoTo 0
        Exit Sub
        
    tratarError:
        MsgBox Err.Description
    End Sub
    

    He probado la consulta en el SQL y si guarda registros, pero en el código me da el error que les comento, el ID es identity por eso no lo pongo en la consulta.


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

    sábado, 31 de diciembre de 2016 23:03

Respuestas

  • Pedro Ávila,

    Recuerdo haber visto algo parecido en un proyecto antiguo, no tengo como corroborarlo así que te pido ayudes con las pruebas. Cambia el uso de parámetros con nombre por parámetros por posición, para ello quita la instrucción que te propuse (propiedad NamedParameters) y coloca marcadores en la instrucción VALUES():

    VALUES(?, ?, ?)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila domingo, 1 de enero de 2017 0:12
    domingo, 1 de enero de 2017 0:06

Todas las respuestas

  • Pedro Ávila,

    Creo que en ADO debes especificar que trabajas con parámetros con nombre:

    '...
    .CommandType = adCmdText
    .NamedParameters = True
    '...



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    sábado, 31 de diciembre de 2016 23:51
  • Hola me sigue dando el mismo error, cuando es un store procedure si no hay problema pero cuando quiero mandar una query me da problemas

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

    sábado, 31 de diciembre de 2016 23:54
  • Pedro Ávila,

    Recuerdo haber visto algo parecido en un proyecto antiguo, no tengo como corroborarlo así que te pido ayudes con las pruebas. Cambia el uso de parámetros con nombre por parámetros por posición, para ello quita la instrucción que te propuse (propiedad NamedParameters) y coloca marcadores en la instrucción VALUES():

    VALUES(?, ?, ?)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Pedro Ávila domingo, 1 de enero de 2017 0:12
    domingo, 1 de enero de 2017 0:06
  • Willams

    Funciono, ¿por que no me funcionaba como lo estaba haciendo?

    y con los marcadores si funciona


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


    domingo, 1 de enero de 2017 0:12