none
Cargar un comboBox sin repetir registros Sql conexion RRS feed

  • Pregunta

  • Tengo una tabla llamada pizza donde estan nombres de pizzas repetidas, pero solo quiero que se muestren como si fueran unicas. Mis campos son codPizza,Nombre_Pizza, Descripcion y Precio_Pizza. Lo que deseo es que cargue el nombre de la pizza en un combo box sin Repetirse, ademas de que cuando le doy a mi boton guardar se agregue al combobox lo que he guardado en nombre_pizza tambien cuando le doy eliminar que este desaparesca del combo y tabla automaticamente.

    Espero me puedan ayudar estoy tardando con esto....

    domingo, 4 de diciembre de 2016 15:03

Respuestas

  • C0ldman,

    No veo que asignes un valor para las propiedades ValueMember y DisplayMember, por otro lado, basta usar la clase DataTable:

    Dim sql As String = "SELECT DISTINCT Nombre_Pizza FROM Pizza"
    Dim da As New SqlDataAdapter(sql, cx)
    Dim dt As New DataTable
    da.Fill(dt)
    
    cb1.ValueMember = "Nombre_Pizza"
    cb1.DisplayMember = "Nombre_Pizza"
    cb1.DataSource = dt


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta C0ldman lunes, 5 de diciembre de 2016 3:13
    lunes, 5 de diciembre de 2016 0:56
  • Gracias loko todo esta bien, pero tengo un pequeño detalle, si elimino el registro ingresado en Nombre_Pizza (con mi boton eliminar claro) como le hago para que el combobox se actualice y ya no salga el item eliminado de mi base de datos. Por que lo elimino y sigue ahi pegadote(hasta que lo cierro y abro).



    Actualizacion: Creo que ya lo resolvi, simplemente llame a la accion cargarCombo() al private sub actualizar()


    lunes, 5 de diciembre de 2016 3:12

Todas las respuestas

  • C0ldman,

    ¿El nombre de la pizza se repite de igual manera que el código? Si deseas obtener los valores únicos podrías usar la función DISTINCT

    Dim ConsultaSQL As String = "SELECT DISTINCT codPizza, Nombre_Pizza FROM pizza"
    

    Con la consulta de selección anterior obtienes valores únicos. Puedes crear un procedimiento que retorne un tipo DataTable que servirá para vincular los datos que muestra el objeto de tipo ComboBox a través de la propiedad DataSource, de hecho ese procedimiento será invocado cada vez que insertas, actualizas o eliminas una instancia de pizza para actualizar los datos en el desplegable.

    Si tienes alguna duda puedes comentarlo.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 4 de diciembre de 2016 15:58
  • Mira tengo este codigo:

    Dim sql As String = "SELECT DISTINCT Nombre_Pizza FROM Pizza"
            Dim Dm As New SqlDataAdapter(sql, cx)
            Dim Dj As New DataSet
            Dm.Fill(Dj, "Pizza")
            Me.cb1.DataSource = Dj.Tables("Pizza")

    Pero no me funciona correctamente, solo me muestra en el combobox estp = "System.Data.DataRowView"

    Solo los nombres se repiten, el cod Pizza es diferente.

    lunes, 5 de diciembre de 2016 0:43
  • C0ldman,

    No veo que asignes un valor para las propiedades ValueMember y DisplayMember, por otro lado, basta usar la clase DataTable:

    Dim sql As String = "SELECT DISTINCT Nombre_Pizza FROM Pizza"
    Dim da As New SqlDataAdapter(sql, cx)
    Dim dt As New DataTable
    da.Fill(dt)
    
    cb1.ValueMember = "Nombre_Pizza"
    cb1.DisplayMember = "Nombre_Pizza"
    cb1.DataSource = dt


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta C0ldman lunes, 5 de diciembre de 2016 3:13
    lunes, 5 de diciembre de 2016 0:56
  • Gracias loko todo esta bien, pero tengo un pequeño detalle, si elimino el registro ingresado en Nombre_Pizza (con mi boton eliminar claro) como le hago para que el combobox se actualice y ya no salga el item eliminado de mi base de datos. Por que lo elimino y sigue ahi pegadote(hasta que lo cierro y abro).



    Actualizacion: Creo que ya lo resolvi, simplemente llame a la accion cargarCombo() al private sub actualizar()


    lunes, 5 de diciembre de 2016 3:12