Visual Basic - LLenar una ComboBox a partir de otra CmBox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

LLenar una ComboBox a partir de otra CmBox

Publicado por Ivan (5 intervenciones) el 17/10/2016 09:19:33
Buenos días amigos, he estado revisando el foro, y hay una respuesta similar, pero no me funciona, por ello escribo. A ver mi problema es que quiero que se llene una ComboBox según el ítem seleccionado en otra combobox anterior. Les muestro código a ver si me ayudan, gracias. Porque la primera si me carga, pero la segunda no. Saludos

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Public conn As New SqlClient.SqlConnection
Public sql As String = ""
Public cmd As New SqlCommand
Public dr As SqlClient.SqlDataReader
 
 
Public Sub llenaCmbCliente()    'Funcion para llenar la comboBox de CLIENTES
    Me.cmbCliente.Items.Clear()
    sql = "SELECT [NOMBRE CLIENTE] FROM DBO.TB_CLIENTES"
    sql = "SELECT DISTINCT [NOMBRE CLIENTE] FROM DBO.TB_CLIENTES"   'Codigo para que no salga el nombre de un cliente dos veces, ya que puede haber dos o mas clientes con el mismo nombre pero con diferente contacto
    'sql es la variable para las consultas a la BD
 
    cmd.CommandType = CommandType.Text
    cmd.Connection = conn
    cmd.CommandText = sql
 
    dr = cmd.ExecuteReader
 
    If dr.HasRows = True Then 'Consultar si hay almenos un registro en la BD
        While dr.Read()
            Me.cmbCliente.Items.Add(dr.GetValue(0))  'El 0 es porque es la columna 0 la idpersona
        End While
    End If
 
    dr.Close()
End Sub
 
Public Sub llenaCmbContacto()  'Funcion para llenar La comboBox de CONTACTOS
 
    Dim Cliente
    Me.cmbContacto.Items.Clear()
    Cliente = cmbCliente.SelectedItem.ToString
 
    sql = "SELECT PERSONACOMPRAS FROM DBO.TB_CLIENTES WHERE [NOMBRE CLIENTE]=" + Cliente 'Es algo asi pero no esta claro"
    'sql es la variable para las consultas a la B
 
 
    cmd.CommandType = CommandType.Text
    cmd.Connection = conn
    cmd.CommandText = sql
 
    dr = cmd.ExecuteReader
 
    If dr.HasRows = True Then 'Consultar si hay almenos un registro en la BD EL PROBLEMA ESTA AQUI!!!!!!!! Lo he comprobado, da como que no hay filas porque?
        While dr.Read()
            Me.cmbContacto.Items.Add(dr.GetValue(0))  'El 0 es porque es la columna 0?
        End While
    End If
 
    dr.Close()
End Sub
 
 
Private Sub cmbCliente_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cmbCliente.SelectionChangeCommitted
    llenaCmbContacto()
End Sub


En La BD la 3ª Columna es el campo Nombre Persona y la 14ª la PersonaCompras, por si lo necesitan saber, SALUDOS!!
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 Edward
Val: 152
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

LLenar una ComboBox a partir de otra CmBox

Publicado por Edward (57 intervenciones) el 30/10/2016 03:13:13
Buen día para todos,

Ivan, dos comentarios para tu inconveniente,

Primero no me queda claro la primera parte porque estas haciendo las dos consultas para llenar el combobox "cmbCliente":

1
2
3
sql = "SELECT [NOMBRE CLIENTE] FROM DBO.TB_CLIENTES"
sql = "SELECT DISTINCT [NOMBRE CLIENTE] FROM DBO.TB_CLIENTES"   'Codigo para que no salga el nombre de un cliente dos veces, ya que puede haber dos o mas clientes con el mismo nombre pero con diferente contacto
    'sql es la variable para las consultas a la BD

En esta instrucción la primera asignación esta demás porque la estas reasignando en la segunda linea una consulta totalmente diferente.

Segundo en la consulta donde llenas el combobox "cmbContacto" no te va arrojar el resultado debido a que el valor de comparación que guardas en la variable "Cliente" lo estas comparando por fuera de la consulta SQL.

1
2
3
4
5
':::Esta es tu consulta la variable Cliente esta por fuera de la consulta
 sql = "SELECT PERSONACOMPRAS FROM DBO.TB_CLIENTES WHERE [NOMBRE CLIENTE]=" + Cliente
 
':::El criterio de comparacion debe ir dentro de la consulta SQL
 sql = "SELECT PERSONACOMPRAS FROM DBO.TB_CLIENTES WHERE [NOMBRE CLIENTE]= '"& Cliente &"' "


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar