none
Ayuda con ComboBox RRS feed

  • Pregunta

  • Buenas colegas, llevo poco tiempo programando en VB.NET aunque le voy cojiendo el paso poco a poco, se me presenta el sig problemas, mas que un problema es una duda, tengo un control combobox donde me muestra el codigo de una tabla clientes, lo que quisera saber es si se puede hacer que me muestre el codigo pero tambien el nombre osea un ejemplo:

    consulta:

    Select codigo, nombre from gen_entidad where (gen_entidad.activa=1)

    combox1.datasource=dataset1

    combobox1.displaymember= "codigo"

    combobox1.valuemember="codigo"

    entonces quisiera saber si se puede poner tambien en displaymember el nombre seguido del codigo.

    Lo otro es ya aprovechando la ocacion como se puede hacer para cuando me pare con el puntero del mouse en un boton me salga un mensajito yo lo tengo echo en un Panel pero no se como hacerlo en el boton ,pienso que sea con el control tooltip pero no se implementarlo. en el panel lo tengo asi:

    Public Sub BarraDeEstado()
            'Se crea el control StatusBar
            Dim BarraEstado As New StatusBar
            'Se crean cuatro objetos StatusBarPanel
            Dim panel1 As New StatusBarPanel
            Dim panel2 As New StatusBarPanel
            'Establece el estilo con que se va a mostrar en pantalla el panel
            panel1.BorderStyle = StatusBarPanelBorderStyle.Sunken
            'Inicializa el texto que apoarece en el panel
            panel1.Text = "Creado por: Pedro Javier Valle Gomez."
            'Se establece la propiedad AutoSize para permitir dimensionar el panel
            panel1.AutoSize = StatusBarPanelAutoSize.Spring
            'Establece el estilo con que se va a mostrar en pantalla el segundo panel
            panel2.BorderStyle = StatusBarPanelBorderStyle.Raised
            'Se crea el ToolTip que muestra la hora cuando se pone el puntero del raton sobre el panel
            panel2.ToolTipText = System.DateTime.Now.ToShortTimeString
            'Se muestran los datos de la fecha en el panel
            panel2.Text = System.DateTime.Today.ToLongDateString
            'Se establece la propoiedad AutoSize del panel al contenido
            panel2.AutoSize = StatusBarPanelAutoSize.Contents
            'Muestro el control StatusBar
            BarraEstado.ShowPanels = True
            'Adiciono los paneles al control StatusBar
            BarraEstado.Panels.Add(panel1)
            BarraEstado.Panels.Add(panel2)
            'Adiciono el control StatusBar al formulario
            frmPrincipal.Controls.Add(BarraEstado)
        End Sub

    asi lo tengo en una barra en uno de los dos paneles pero no se como hacerlo para el boton, muchas gracias, espero alguna ayuda.Salu2s

    miércoles, 19 de julio de 2017 0:56

Respuestas

  • Hola Pedro:

    quisera saber es si se puede hacer que me muestre el codigo pero tambien el nombre

     Claro que es posible, pero yo sugeriria que la concatenacion la realices directamente en la consulta, ademas de otros cambios que para bien tuyo sugeria realizaras, te dejo un ejemplo de como es que actuaria para darle solucion a tus necesidades del ComboBox:

    'Clase cliente
    Public Class Cliente
    	Public Property Codigo() As Integer
    	Public Property Nombre() As String
    End Class
    
    'Funcion para recuperar los cliente, esta funcion devolvera un objeto del tipo List(Of Cliente)
    Public Function Clientes() As List(Of Cliente)
    	'Declaramos una lista del objeto Cliente la cual será la encargada de
    	'regresar una colección de los elementos que se obtengan de la BD
    	'
    	Dim clientes As New List(Of Cliente)()
    	'Utilizas el archivo de configuraciones para llamar a la cadena de conecion
    	'mas información aquí: http://joseluisgarciab.blogspot.com/2013/10/app-config-cadenas-de-conexion.html
    	Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnnString").ToString())
    		'abres la conexión
    		cnx.Open()
    		'Declaramos la consulta SQL
    		Const  sqlQuery As String = "SELECT Codigo, (Codigo + ' ' + Nombre) AS 'CodigoNombre' FROM gen_entidad WHERE activo=1"
    		Using cmd As New SqlCommand(sqlQuery, cnx)
    			'Ejecutados el comando
    			Dim dataReader As SqlDataReader = cmd.ExecuteReader()
    			'
    			'Preguntamos si el DataReader fue devuelto con datos
    			While dataReader.Read()
    				'
    				'Instanciamos al objeto Inventario para llenar sus propiedades
    					'Otros campos
    				Dim cliente As New Cliente() With { _
    					Codigo = Convert.ToInt32(dataReader("codigo")), _
    					Cliente = Convert.ToString(dataReader("codigonombre"))
    				}
    				'
    				'Insertamos el objeto Producto dentro de la lista Productos
    				clientes.Add(cliente)
    			End While
    		End Using
    	End Using
    	Return clientes
    End Function
    
    Private Sub cmbClientes_Click(sender As Object, e As EventArgs) Handles cmbClientes.Click
    	'Llamamos a la funcion en cargada de recuperar los datos
    	cmbClientes.DataSource = Clientes()
    	cmbClientes.DisplayMember = "codigoNombre"
    	cmbClientes.ValueMember = "codigo"
    End Sub

    Por favor, analiza el código y trata de implementarlo si tienes dudas nos preguntas, no copies y pegues.

    Lo otro es ya aprovechando la ocacion como se puede hacer para cuando me pare con el puntero del mouse en un boton me salga un mensajito 

    Para este tema, te dejo un link con un ejemplo sobre el uso del componente tooltip:

    ToolTip Class

     Espero que la información proporcionada te sea de utilidad.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta PedroJ2017 jueves, 20 de julio de 2017 14:49
    miércoles, 19 de julio de 2017 14:36
  • La asignación de la propiedad ValueMember no tiene sentido que la repitas dentro del While. Sácala fuera del bucle.

    Saludos, Javier J

    • Marcado como respuesta PedroJ2017 jueves, 20 de julio de 2017 14:50
    miércoles, 19 de julio de 2017 6:31

Todas las respuestas

  • Bueno me respondo a mi primera pregunta lo resolvi de la siguiente manera:

    Private Sub cmbClientes_Click(sender As Object, e As EventArgs) Handles cmbClientes.Click
                    Dim consulta As New SqlClient.SqlCommand
            consulta = New SqlClient.SqlCommand("Select codigo, nombre from gen_entidad where activo=1", sql1)
            Dim respuesta As SqlClient.SqlDataReader
            sql1.Open()
            respuesta = consulta.ExecuteReader
            While respuesta.Read
                cmbClientes.Items.Add(respuesta.Item("codigo") & " - " & respuesta.Item("nombre"))
                cmbClientes.ValueMember = "codigo"
            End While
            respuesta.Close()
            sql1.Close()
        End Sub
    ahora mi pregunta es si el ValueMember esta bien declarado ahi.saludos y espero me ayuden con el tooltiptext del buttom..

    miércoles, 19 de julio de 2017 1:48
  • La asignación de la propiedad ValueMember no tiene sentido que la repitas dentro del While. Sácala fuera del bucle.

    Saludos, Javier J

    • Marcado como respuesta PedroJ2017 jueves, 20 de julio de 2017 14:50
    miércoles, 19 de julio de 2017 6:31
  • Hola Pedro:

    quisera saber es si se puede hacer que me muestre el codigo pero tambien el nombre

     Claro que es posible, pero yo sugeriria que la concatenacion la realices directamente en la consulta, ademas de otros cambios que para bien tuyo sugeria realizaras, te dejo un ejemplo de como es que actuaria para darle solucion a tus necesidades del ComboBox:

    'Clase cliente
    Public Class Cliente
    	Public Property Codigo() As Integer
    	Public Property Nombre() As String
    End Class
    
    'Funcion para recuperar los cliente, esta funcion devolvera un objeto del tipo List(Of Cliente)
    Public Function Clientes() As List(Of Cliente)
    	'Declaramos una lista del objeto Cliente la cual será la encargada de
    	'regresar una colección de los elementos que se obtengan de la BD
    	'
    	Dim clientes As New List(Of Cliente)()
    	'Utilizas el archivo de configuraciones para llamar a la cadena de conecion
    	'mas información aquí: http://joseluisgarciab.blogspot.com/2013/10/app-config-cadenas-de-conexion.html
    	Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnnString").ToString())
    		'abres la conexión
    		cnx.Open()
    		'Declaramos la consulta SQL
    		Const  sqlQuery As String = "SELECT Codigo, (Codigo + ' ' + Nombre) AS 'CodigoNombre' FROM gen_entidad WHERE activo=1"
    		Using cmd As New SqlCommand(sqlQuery, cnx)
    			'Ejecutados el comando
    			Dim dataReader As SqlDataReader = cmd.ExecuteReader()
    			'
    			'Preguntamos si el DataReader fue devuelto con datos
    			While dataReader.Read()
    				'
    				'Instanciamos al objeto Inventario para llenar sus propiedades
    					'Otros campos
    				Dim cliente As New Cliente() With { _
    					Codigo = Convert.ToInt32(dataReader("codigo")), _
    					Cliente = Convert.ToString(dataReader("codigonombre"))
    				}
    				'
    				'Insertamos el objeto Producto dentro de la lista Productos
    				clientes.Add(cliente)
    			End While
    		End Using
    	End Using
    	Return clientes
    End Function
    
    Private Sub cmbClientes_Click(sender As Object, e As EventArgs) Handles cmbClientes.Click
    	'Llamamos a la funcion en cargada de recuperar los datos
    	cmbClientes.DataSource = Clientes()
    	cmbClientes.DisplayMember = "codigoNombre"
    	cmbClientes.ValueMember = "codigo"
    End Sub

    Por favor, analiza el código y trata de implementarlo si tienes dudas nos preguntas, no copies y pegues.

    Lo otro es ya aprovechando la ocacion como se puede hacer para cuando me pare con el puntero del mouse en un boton me salga un mensajito 

    Para este tema, te dejo un link con un ejemplo sobre el uso del componente tooltip:

    ToolTip Class

     Espero que la información proporcionada te sea de utilidad.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta PedroJ2017 jueves, 20 de julio de 2017 14:49
    miércoles, 19 de julio de 2017 14:36
  • Muchas gracias por responder colegas, en cuanto a Jose Luis eso era justo lo que queria hacer, concatenar en la consulta, pero ni atras ni alante daba con la solucion asi que inventando un poco di con esa posible solucion, en cuanto a tu explicacion muy buena tomare ese codigo de referencia, muchas gracias
    jueves, 20 de julio de 2017 1:16
  • Jose Luis si entiendo perfectamente el codigo, me quedo bastante claro, no soy de los que copian y pegan, primero lo analiso bien hasta entenderlo luego si quedo con dudas, sigo buscando informacion, muchas gracias nuevamente.Salu2s
    jueves, 20 de julio de 2017 1:21
  • Hola Pedro:

     Excelente decisión la de analizar y tratar de implementar, en nuestra profesión en análisis es indispensable para adquirir habilidades.

    No olvides cerrar la pregunta marcando las respuestas que te resolvieron tu problema y votandola como útiles si aporto algún conocimiento que llevo a la solución.


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 20 de julio de 2017 2:37