Error al intentar hacer update en vb 2008 + sql server 2005

Pregunta Error al intentar hacer update en vb 2008 + sql server 2005

  • lunes, 18 de junio de 2012 2:22
     
     

    Buenas tengo un problema y no se donde es que tengo el error, ojala alguien me pueda ayudar ya que no logro darme cuenta donde es que me estoy equivocando  :

    Al tratar de hacer un update me sale el siguiente error;

    El Procedimiento o la funcion 'PA_UPDATE_USER' esperaba el parametro '@in_nombre_user', que no se ha especificado

    EL Procedimiento es:

    ALTER PROCEDURE dbo.PA_UPDATE_USER
    @in_nombre_user nvarchar(50),
    @in_pass_user nvarchar(50),
    @in_tipo_user nvarchar(50)

    AS
    update usuarios
    set nombre_usuario=@in_nombre_user,
    pass_usuario = @in_pass_user,
    tipo_usuario=@in_tipo_user
    where nombre_usuario=@in_nombre_user
    RETURN

    La Funcion:

    Public Function editar_usuario(ByVal dts As Clsusuario) As Boolean
            Try
                conectado()
                cmd = New SqlCommand("PA_UPDATE_USER")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
                cmd.Parameters.AddWithValue("@in_nombre_user", dts.nombre_user)
                cmd.Parameters.AddWithValue("@in_pass_user", dts.pass_user)
                cmd.Parameters.AddWithValue("@in_tipo_user", dts.tipo_user)
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    Y el boton para el update:

     Try
                Dim dts As New Clsusuario
                Dim func As New Funciones
                dts.nombre_user = TxtUsusario.Text
                dts.pass_user = TxtPassword.Text
                dts.tipo_user = TxtTipoUsuario.Text
                If func.editar_usuario(dts) Then
                    MsgBox("El usuario se ha modificado")
                    TxtUsusario.Clear() : TxtPassword.Clear() : TxtTipoUsuario.Clear()
                Else
                    MsgBox("Error al editar")
                    TxtUsusario.Clear() : TxtPassword.Clear() : TxtTipoUsuario.Clear()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    • Cambiado Enrique M. MontejoMVP jueves, 21 de junio de 2012 18:24 acceso a datos (De:Lenguaje VB.NET)
    •  

Todas las respuestas

  • lunes, 18 de junio de 2012 2:50
    Moderador
     
     

    pregunta

    proque haces esto

    cmd = New SqlCommand("PA_UPDATE_USER")

    y no esto

    Dim cmd As New SqlCommand("PA_UPDATE_USER")

    difo la variable donde la declaras?


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

  • lunes, 18 de junio de 2012 2:54
     
     

    la declaro al comienzo del archivo donde tengo las funciones

    Dim cmd As New SqlCommand

  • lunes, 18 de junio de 2012 3:29
    Moderador
     
     

    no has probado declarar las variables donde las usas

    o sea si el cmd lo usas dentro de editar_usuario() definelo solo alli dentro, no de forma global


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

  • jueves, 21 de junio de 2012 23:10
     
      Tiene código

    Hola.

    Tu lo unico que no veo es cuando abres y cierras la conexion:

    Public Function editar_usuario(ByVal dts As Clsusuario) As Boolean
            Try
                conectado()
                cmd = New SqlCommand("PA_UPDATE_USER")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
                cmd.Parameters.AddWithValue("@in_nombre_user", dts.nombre_user)
                cmd.Parameters.AddWithValue("@in_pass_user", dts.pass_user)
                cmd.Parameters.AddWithValue("@in_tipo_user", dts.tipo_user)
                cmd.Connection.Open();
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
                cmd.Connection.Close();
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                desconectado()
            End Try
        End Function

    Si eso ese proceso lo hace el metodo conectado() y desconectado(), prueba con esta forma y nos comentas.

    Saludos.


    - Si un comentario te ayuda a resolver tu problema, marcalo como respuesta, pero si basado en tu experiencia la consideras como util para la comunidad de desarrolladores, marcalo como util.