Visual Basic.NET - ComboBox VB problema cuando se repite un Item

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

ComboBox VB problema cuando se repite un Item

Publicado por Javier (5 intervenciones) el 05/03/2021 08:00:02
Buenos días, espero que me podáis ayudar. Estoy trabajando con Visual Studio 2019 en VB. Tengo un formulario con un combobox y diferentes cajas de texto, dispongo de una base de datos SQL con una tabla con datos de clientes (Nombre, Dirección, Población, Correo, etc….) la idea es llenar el combobox del formulario con los nombres de los clientes y con SelectedIndexChanged se carguen el resto de datos en su caja de texto correspondiente, hasta ahí todo bien, parece que funciona, pero no es asi, tengo varios casos de clientes que tienen negocios en diferentes direcciones o poblaciones y aunque se llaman igual son diferentes empresas, es aquí donde surge el problema el combobox carga los dos, pero carga siempre los datos del primero. He probado diferentes formas de llenar el combobox y en todas hace lo mismo
Espero haberme explicado bien y que me podáis ayudar.
Gracias por anticipado

Este es el código con el lleno el ComboBox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub llenarComboBox(ByVal cb As ComboBox)
    Try
        cmd = New SqlCommand("Select Cliente from DatosCliente", conex)
        dr = cmd.ExecuteReader
 
        While dr.Read
            cb.Items.Add(dr.Item("Cliente"))
        End While
 
        dr.Close()
    Catch ex As Exception
 
    End Try
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

ComboBox VB problema cuando se repite un Item

Publicado por Phil Rob (1546 intervenciones) el 05/03/2021 11:19:32
Hola,

Piensio que debes llenar un DataTable y la liar a ComboBox.

Ejemplo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  ' ... ... ...
        ' Connexion effective
        MiComando = MiConexion.CreateCommand()
        MiComando.CommandType = CommandType.Text
        MiComando.CommandText = "SELECT IdCliente, Cliente FROM DatosCliente"  ' IdCliente : escribe el nombre de la PrimaryKey
       Dim UnaTabla As DataTable
 
        Dim UnosDatos As OleDbDataReader
        UnosDatos = MiComando.ExecuteReader()
        ' crear colunas en  DataTabla
        For C As Integer = 0 To UnosDatos.FieldCount - 1
            UnaTabla.Columns.Add(UnosDatos.GetName(C))
        Next
 
        UnaTabla.TableName = "MiTablaDeLosClientes"
 
        Do While UnosDatos.Read
            UnaTabla.Rows.Add(UnosDatos.Item(0), UnosDatos.Item(1), UnosDatos.Item(2))
        Loop
        UnosDatos.Close()
 
 
 
        MiConexion.Close()
 
cb.DataSource = UnaTabla
       cb.DisplayMember = "Cliente"
       cb.ValueMemeber = "IdCliente"  ' IdCliente : escribe el nombre de la PrimaryKey
 
' ... ... ...

Con la ValueMember, no problema para leer el bueno record en la DB, pero que existera siempre dificultad para la selección en la Combo cuando encontramos 2 veces mismos nombres ....

Pero puedes leer todos campos (SELECT * FROM DatosCliente) y los mostrar en diferentes TextBox y otras zonas de textos :

Ejemplo :

1
UnTextBox.DataBindings.Add("Text", UnaTabla, "NombreDelCamposQueTeGusta")

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 83
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

ComboBox VB problema cuando se repite un Item

Publicado por Raul Guillermo (31 intervenciones) el 06/03/2021 00:12:49
Hola Javier buenas tardes.

Me da gusto que seas de los que llena los combobox a patín, yo intenté llenarlo con Dataset, pero a la hora de cambiar la base de datos de ubicación ya no me funcionaban, así que en lo personal es mejor llenarlos a pie.

Yo lleno un combo box de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub Full_CmbEmpress()
    Try
        Using cnx As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dSn)
            sSql = "SELECT * FROM EMPRESAS"
            Dim MyCommand As OleDb.OleDbCommand
            Dim MyAdapter As New OleDb.OleDbDataAdapter
            Dim MyConexion As New OleDb.OleDbConnection
            MyCommand = cnx.CreateCommand
            MyCommand.CommandText = "SELECT * FROM EMPRESAS"
            MyAdapter.SelectCommand = MyCommand
            Dim Dt_Cliente As New DataTable
            MyAdapter.Fill(Dt_Cliente)
            cmbEmpresa.DataSource = Dt_Cliente
            cmbEmpresa.DisplayMember = "EMPRESA"
            cmbEmpresa.ValueMember = "NUMEMP"
        End Using
    Catch ex As Exception
        MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

El combo box me despliega el nombre de la empresa, así que si tuviera dos o tres empresas con el mismo nombre, lo que las diferenciaría seria el "NUMEMP" o sea número de empresa que es el N° que le asigno a la empresa al darla de alta, entonces tu debes de tener un campo que puedas agregar al valuemember y por ese buscarlo en la tabla y desplegarlo en tus cajas de texto.

Espero haberme dado a entender y que te sirva de ayuda.

Saludos desde México.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar