none
problemas con ComboBox RRS feed

  • Pregunta

  • quiero saber de que manera puedo controlar esta variable para poder guardarla en un registro

     Dim intnombre As String

    Protected Sub Dropnombre_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Dropnombre.SelectedIndexChanged

            Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("sacifConnectionString").ToString())
                conn.Open()
                        
                Dim oComando As New SqlCommand("SELECT idempleado  FROM Empleado where  nombres =

                 '" &   Dropnombre.Text & "' ", conn)
                Dim oDataReader As SqlDataReader


                oDataReader = oComando.ExecuteReader() ' obtener DataReader para Categoria

                oDataReader.Read()
      intnombre = CInt(oDataReader("idempleado"))
                oDataReader.Close() 'Cierro el DataReader para que pueda ser ejecutado otro
           End Using
        End Sub

     Public Sub Insertar(usuario As usuario)
            Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("sacifConnectionString").ToString())
                conn.Open()
                Try
                    Dim cmd As New SqlCommand("InsertarUsuario", conn)
                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.AddWithValue("@idperfil", usuario.usu_idperfil)
                    cmd.Parameters.AddWithValue("@idempleado", intnombre)
                    cmd.Parameters.AddWithValue("@idempresa", usuario.usu_idempresa)

     cmd.ExecuteNonQuery()
                Catch ex As Exception
                    System.Console.Write(ex.Message)
                End Try
            End Using

              
    martes, 10 de mayo de 2016 3:13

Respuestas

  • Hola Dominio69,

    ¿Cómo estas cargando el objeto ComboBox? 

    El objeto debería contener el texto descriptivo asociado al identificador, esto lo logras configurando las propiedades: DisplayMember y ValueMember, de tal manera que por cada elemento seleccionado no hagas una petición al servidor de datos para obtener el id, es innecesario.

    Entendiendo que el objeto ComboBox contiene tanto el texto descriptivo como el identificador para un elemento seleccionado puedes pasar ese valor como argumento del parámetro @idempleado, algo como:

    cmd.Parameters.AddWithValue("@idempleado", Convert.ToInt32(cboEmpleado.SelectedValue))



    martes, 10 de mayo de 2016 3:30
  • hola

    Porque en el titulo de la pregunta mencionas a dropbox si despues el planteo del problema no relacion ? edita la pregunta y define un titulo adecuado

    dropbox es un sitio para subir archivos a la nube, si te refieres a un combobox o dropdownlist define esto en el titulo de la pregunta

    >>quiero saber de que manera puedo controlar esta variable para poder guardarla en un registro

    si asignas al metodo Insertar() un parametro con una entidad "usuario" deberias usar esta y solo esta dentro del metodo, no accedas a controles de forma directa

    asigna a la entidad usuario el valor de los controles como ser

    Dim usr As New Usuario
    
    usr.IdEmpleado = CInt(comboId.SelectedValue)
    
    //resto propiedades
    
    Insertar(usr)

    no definas variables globales porque rompes con la responsabilidad del metodo
    cmd.Parameters.AddWithValue("@idempleado", usuario.IdEmpleado)


    Si defines clases recuerda poner las propeidades para asignar los valores

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de mayo de 2016 8:06

Todas las respuestas

  • Hola Dominio69,

    ¿Cómo estas cargando el objeto ComboBox? 

    El objeto debería contener el texto descriptivo asociado al identificador, esto lo logras configurando las propiedades: DisplayMember y ValueMember, de tal manera que por cada elemento seleccionado no hagas una petición al servidor de datos para obtener el id, es innecesario.

    Entendiendo que el objeto ComboBox contiene tanto el texto descriptivo como el identificador para un elemento seleccionado puedes pasar ese valor como argumento del parámetro @idempleado, algo como:

    cmd.Parameters.AddWithValue("@idempleado", Convert.ToInt32(cboEmpleado.SelectedValue))



    martes, 10 de mayo de 2016 3:30
  • hola

    Porque en el titulo de la pregunta mencionas a dropbox si despues el planteo del problema no relacion ? edita la pregunta y define un titulo adecuado

    dropbox es un sitio para subir archivos a la nube, si te refieres a un combobox o dropdownlist define esto en el titulo de la pregunta

    >>quiero saber de que manera puedo controlar esta variable para poder guardarla en un registro

    si asignas al metodo Insertar() un parametro con una entidad "usuario" deberias usar esta y solo esta dentro del metodo, no accedas a controles de forma directa

    asigna a la entidad usuario el valor de los controles como ser

    Dim usr As New Usuario
    
    usr.IdEmpleado = CInt(comboId.SelectedValue)
    
    //resto propiedades
    
    Insertar(usr)

    no definas variables globales porque rompes con la responsabilidad del metodo
    cmd.Parameters.AddWithValue("@idempleado", usuario.IdEmpleado)


    Si defines clases recuerda poner las propeidades para asignar los valores

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 10 de mayo de 2016 8:06