none
Vincular 2 Combos desde 2 Tablas cada uno RRS feed

  • Pregunta

  • Bueno Tengo una Tabla Clientes que son empresas y una Tabla Contacto que son los trabajadores de esas empresas pero entre ellos no hay un campo comun.

    Tengo el combo 1 que los datos se jalan de Clientes  y el combo2 de contacto

    Quiero que si elijo Empresa1 en el combo2 me muestre los trabajadores de Empresa1 y asi sucesivamente para las demas opciones.

    La tabla 1 tiene un campo RazonSocial y la Tabla2 un Campo Empresa ese es el unico campo donde los datos son iguales.

    Espero me puedan ayudar.

    Gracias

    domingo, 4 de marzo de 2018 22:34

Respuestas

  • Falta una cosa y es que la carga del combo cboContacto debe ir dentro del evento SelectedIndexChange del combo cboSolicitante para que cada vez que elijas un solicitante automáticamente se cargue el combo cboContacto
    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 16:50
    martes, 6 de marzo de 2018 16:35

Todas las respuestas

  • ¿Podrías poner el código de como cargas los combos? ¿Y unos ejemplos de los registros de esas tablas? 

    Saludos


    lunes, 5 de marzo de 2018 10:36
  • Bueno los lleno ambos asi:

    Public Sub Contacto()
            Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                Dim cmd As New SqlCommand("Select NomApe,Telefono,Email FROM Contacto", cnx)
                Dim dr As New SqlDataAdapter(cmd)
                Dim dt As New DataTable
                dr.Fill(dt)
                Me.cboContacto.DataSource = dt
                Me.cboContacto.DisplayMember = "NomApe"
                Me.cboContacto.ValueMember = "NomApe"
                Me.cboTelefono.DataSource = dt
                Me.cboTelefono.ValueMember = "Telefono"
                Me.cboEmail.DataSource = dt
                Me.cboEmail.ValueMember = "Email"
            End Using
        End Sub

    Public Sub Solicitante()
            Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                Dim cmdx As New SqlCommand("Select RazonSocial, Direccion,Departamento,Provincia,Distrito FROM CabeceraCliente ORDER BY Id", cnx)
                Dim drx As New SqlDataAdapter(cmdx)
                Dim dtx As New DataTable
                drx.Fill(dtx)
                Me.cboSolicitante.DataSource = dtx
                Me.cboSolicitante.DisplayMember = "RazonSocial"
                Me.cboSolicitante.ValueMember = "RazonSocial"
                Me.cboDireccion.DataSource = dtx
                Me.cboDireccion.ValueMember = "Direccion"
                Me.cboDepartamento.DataSource = dtx
                Me.cboDepartamento.ValueMember = "Departamento"
                Me.cboProvincia.DataSource = dtx
                Me.cboProvincia.ValueMember = "Provincia"
                Me.cboDistrito.DataSource = dtx
                Me.cboDistrito.ValueMember = "Distrito"
            End Using
        End Sub

    La idea es que cuando yo elija la empresa  me pueda mostrar solo los contactos de la empresa mas no los demas.

    Las tablas sus registros son estos proporcionados no son llenados por mi yo solo quiero adaptar a la idea 

    He tratado de buscar los nombres de empresas que contenga la imagen anterior por ejemplo BARCINO , QUIMTIA, GRAÑA esas y otras mas tienen la unica relacion de nombre igual.

    martes, 6 de marzo de 2018 1:57
  • Lo primero que debes hacer es asegurarte de que la columna "Empresa" y la columna "RazonSocial" contienen los mismos datos. Estoy viendo que en "Empresa" tienes "BARCINO S.A." y en "RazonSocial" tienes "BARCINO SA".

    Después debes añadir un "where" a la consulta de contacto para que coja el valor del combo cboSolicitante, algo así:

    Dim cmd As New SqlCommand("Select NomApe,Telefono,Email FROM Contacto WHERE Empresa like "+Me.cboSolicitante.SelectedItem(No se si se escribe así en vb), cnx)

    Saludos

    martes, 6 de marzo de 2018 7:59
  • Ok Primero arreglare esos de los nombres luego veo como sale.
    martes, 6 de marzo de 2018 12:35
  •  Dim cmd As New SqlCommand("Select NomApe,Telefono,Email FROM Contacto WHERE Empresa like " + Me.cboSolicitante.SelectedItem, cnx)

    al hacer eso ya no se llena los combos y sale vacios luego lo cambie por:

    Dim cmd As New SqlCommand("Select NomApe,Telefono,Email,Empresa FROM Contacto WHERE Empresa like '%" & cboSolicitante.SelectedItem & "%'", cnx)
    No sale error pero no hace eso que escoja los contactos que pertenecen a la empresa solicitante.

    Saludos


    martes, 6 de marzo de 2018 14:46
  • Prueba así:

    Dim cmd As New SqlCommand("Select NomApe,Telefono,Email FROM Contacto WHERE Empresa like '" + Me.cboSolicitante.Text+"'", cnx)

    Comprueba que coge el texto del cboSolicitante y lo "encierra" entre comillas simples. La select deberia quedar así:

    Select NomApe,Telefono,Email FROM Contacto WHERE Empresa like 'BARCINO S.A.'

    martes, 6 de marzo de 2018 14:54
  • Hice algo similar como mencione arriba pero no hace

    Dim cmd As New SqlCommand("Select NomApe,Telefono,Email,Empresa FROM Contacto WHERE Empresa like '%" & cboSolicitante.SelectedItem & "%'", cnx)
    Salen todos los contactos mezclados de todas las empresas y no que solo corresponde a solicitante.


    martes, 6 de marzo de 2018 15:03
  • Creo que cboSolicitante.SelectedItem no está cogiendo ningún valor y por eso salen todos los contactos porque coge los % que es un caracter comodín de sql server. Comprueba que cboSolicitante.SelectedItem coge el valor seleccionado en el combo cboSolicitante y después quita los %.

    Si puedes prueba esta select directamente en sql server a ver si te da resultados:

    Select NomApe,Telefono,Email FROM Contacto WHERE Empresa like 'BARCINO S.A.'

    Asegurate que BARCINO S.A. tiene contacto sino pon otro que si lo tenga

    martes, 6 de marzo de 2018 15:38
  • Bueno estoy escogiendo los que si tienen contactos pero si no tiene contacto entonces deberia salir el combo vacio caso contrario lleno pero bueno. Los valores los llena pero son personas que no pertenecen a esa empresa. Salen todo mezclados me refiero en el sistema en la consulta desde sql si lo hace bien. y aqui esta el resultado


    Y si quito el  % el contacto combo sale vacio.
    martes, 6 de marzo de 2018 15:52
  • Si en sql server sale bien la consulta entonces el problema está en que cboSolicitante.SelectedItem no está cogiendo ningún valor. Comprueba si está cogiendo el valor del combo, si no es así prueba a cambiarlo por cboSolicitante.Text
    martes, 6 de marzo de 2018 16:04
  • Tampoco; el combo llena bien escribo y me da el valor pero en el contacto no solo salen todos algo mas sera.

    martes, 6 de marzo de 2018 16:15
  • Falta una cosa y es que la carga del combo cboContacto debe ir dentro del evento SelectedIndexChange del combo cboSolicitante para que cada vez que elijas un solicitante automáticamente se cargue el combo cboContacto
    • Marcado como respuesta Javier Roque martes, 6 de marzo de 2018 16:50
    martes, 6 de marzo de 2018 16:35
  • Private Sub cboSolicitante_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSolicitante.SelectedIndexChanged
            Contacto()
        End Sub

    Perfecto Ahora si 

    Gracias.

    martes, 6 de marzo de 2018 16:50
  • Disculpa por no haber caído antes en eso.

    Saludos

    martes, 6 de marzo de 2018 16:57