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

  • Pregunta

  • 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. Montejo jueves, 21 de junio de 2012 18:24 acceso a datos (De:Lenguaje VB.NET)
    lunes, 18 de junio de 2012 2:22

Todas las respuestas

  • 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:50
  • la declaro al comienzo del archivo donde tengo las funciones

    Dim cmd As New SqlCommand

    lunes, 18 de junio de 2012 2:54
  • 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

    lunes, 18 de junio de 2012 3:29
  • 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.

    jueves, 21 de junio de 2012 23:10