none
Usando vários registros em uma COMBOBOX. RRS feed

  • Pergunta

  • Boa tarde galera.

    Quem puder me ajudar, ficarei grato.

    Me deparei com a seguinte dúvida.

    Tenho duas tabelas, Colaborador e Pacientes.

    COLABORADOR                                                             PACIENTES

    cod_colab PRIMARY KEY                                               cod_pacientes PRIMARY KEY

    nome_colaborador                                                       nome_pacientes

    setor                                                                            cod_colab

    conjuge                                                                       

    filho01

    filho02

    filho03

    filho04

    No meu FORM tenho duas ComboBox onde eu devo selecionar o colaborador e no outro ComboBox devo selecionar os pacientes do colaborador, que no caso seria nome_colaborador, conjuge, filho01, filho02, filho03,filho04.

    Só que estou sem idéia de como poderei fazer com que os pacientes do colaborador apareçam na tabela PACIENTES.

    Alguém pode me ajudar. Um grande abraço e muito obrigado.

    quinta-feira, 15 de novembro de 2012 17:38

Respostas

  • Guilherme, boa tarde.

    Pra início de conversa, a estrutura da sua tabela não está legal. Está no míniomo estranha.

    Ex.: Ao meu ver, uma tabela chamada "Colaborador" só deveria conter informações sobre os colaboradores (os que de fato são colaboradores). Me parece estranho ter na tabela "Colaborador" o nome do cônjuge, por exemplo. Poderia existir uma outra tabela, de relacionamento. Ex.: "Familia_Colaborador". Acho que isso deixaria seu cadastro mais "limpo".

    Mas independente disso, vamos lá:

    Para o primeiro combo, seu dataset seria o resultado de:

    Select nome_colaborador From Colaborador

    Já para o segundo combo, você precisará, por exemplo, de um Union para selecionar todas as colunas.

    Exemplo:

    Create Table #Colaborador
    (cod_colab int Identity PRIMARY KEY, nome_colaborador VarChar(20), conjuge VarChar(20),
     filho01 VarChar(20), filho02 VarChar(20), filho03 VarChar(20), filho04 VarChar(20))
    
    Insert Into #Colaborador Values
    ('Roberson', 'Natália', 'Pedro', 'Lucas', 'Manoela', Null),
    ('Guilherme', 'Daniela', 'Caroline', Null, Null, Null)
    
    Select nome_colaborador From #Colaborador Where (cod_colab = 1)
    Union
    Select conjuge From #Colaborador Where (cod_colab = 1) and (conjuge is not Null)
    Union
    Select filho01 From #Colaborador Where (cod_colab = 1) and (filho01 is not Null)
    Union
    Select filho02 From #Colaborador Where (cod_colab = 1) and (filho02 is not Null)
    Union
    Select filho03 From #Colaborador Where (cod_colab = 1) and (filho03 is not Null)
    Union
    Select filho04 From #Colaborador Where (cod_colab = 1) and (filho04 is not Null)


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 19 de novembro de 2012 17:00
    Moderador

Todas as Respostas

  • Guilherme os pacientes também são colaboradores?

    Veja se entendi:

    Colaboradores:                                      Pacientes:

    colaborador1                                         paciente1 (colaborador1)

    colaborador2                                         paciente2 (colaborador1)

    colaborador3                                         paciente3 (colaborador2)

    Você gostaria de exibir apenas os pacientes do colaborador selecionado no primeiro combobox? é isso?

    Se for restrinja a consulta que preenche os valores disponíveis para o combobox2 aos pacientes que tiverem com o cod_colab do colaborador selecionado no combobox1.

    quinta-feira, 15 de novembro de 2012 19:21
  • Olá Marcos.

    Obrigado pela resposta, desculpe se não consegui passar de uma forma clara, vou tentar simplificar.

    É um sistema que emite requisições. No caso os pacientes, é a família do colaborador. Conjuge, Filhos e Colaborador.

    A família como o colaborador pode utilizar as requisições.

    Sendo duas ComboBox, uma ComboBox(Colaborador) que me trás os nomes somente dos Colaboradores que trabalham na empresa.

    E outro ComboBox(Paciente) que me trás o nome do colaborador selecionado acima mais os seus dependentes cadastrados(Conjuge e filhos).

    EX:

    • Fiz o Cadastro de um colaborador:

    Colaborador: Guilherme Triano

    Conjuge: Severina Chik Chik

    Filho 1: Leodenaldo Guimarães

    Filho 2: Leodenildo Rego

    • E na hora de emitir a Requisição teria as ComboBox (Colaborador e Paciente).

    Colaborador: Guilherme Triano

    Paciente: Guilherme Triano, Severina Chik Chik, Leodenaldo Guimarães, Leodenildo Rego.

    Consigo buscar os nomes dos Colaboradores na ComboBox Colaborador, só que não estou conseguindo buscar os nomes na ComboBox Paciente.

    Um grande abraço.


    • Editado Guilherme Triano sexta-feira, 16 de novembro de 2012 12:32 Adicionei mais informações
    sexta-feira, 16 de novembro de 2012 12:30
  • Gilherme,

    Para unir o resultado de duas consultas você pode usar o operador UNION ou pode fazer a uião de duas tabelas através de operadores como o INNER JOIN

    Acho que ficaria dessa forma:

    Select
    nome_colaborador,
    conjuge,                                                  
    filho01,
    filho02,
    filho03,
    filho04
    From 
    colaborador c
    inner join pacientes p on c.cod_colab = p.cod_colab

    sexta-feira, 16 de novembro de 2012 12:46
  • Entendi Marcos.

    Só que a tabela Pacientes está vazia.

    A tabela COLABORADOR é onde fica todos os dados. (Colaborador, Conjuge, filho01, filho02, filho03, filho04).

    Usando o INNER JOIN eu poderia então descartar a tabela PACIENTES. Podendo fazer a busca diretamente na tabela COLABORADOR.

    A tabela PACIENTES está vazia, não consta nenhum registro, o que eu imaginava que poderia dar certo é na hora que faço o cadastro de um Colaborador novo, faria uma cópia somente dos dados que precisa ser buscado pelo ComboBox(nome_colab,conjuge,filho01,02,03,04) na tabela PACIENTES.

    Um grande abraço e muito obrigado pelas respostas.

    sexta-feira, 16 de novembro de 2012 14:02
  • Guilherme você conseguiu resolver? se sim por favor marcar a resposta para fecharmos essa thread.
    sexta-feira, 16 de novembro de 2012 14:59
  • Guilherme, boa tarde.

    Pra início de conversa, a estrutura da sua tabela não está legal. Está no míniomo estranha.

    Ex.: Ao meu ver, uma tabela chamada "Colaborador" só deveria conter informações sobre os colaboradores (os que de fato são colaboradores). Me parece estranho ter na tabela "Colaborador" o nome do cônjuge, por exemplo. Poderia existir uma outra tabela, de relacionamento. Ex.: "Familia_Colaborador". Acho que isso deixaria seu cadastro mais "limpo".

    Mas independente disso, vamos lá:

    Para o primeiro combo, seu dataset seria o resultado de:

    Select nome_colaborador From Colaborador

    Já para o segundo combo, você precisará, por exemplo, de um Union para selecionar todas as colunas.

    Exemplo:

    Create Table #Colaborador
    (cod_colab int Identity PRIMARY KEY, nome_colaborador VarChar(20), conjuge VarChar(20),
     filho01 VarChar(20), filho02 VarChar(20), filho03 VarChar(20), filho04 VarChar(20))
    
    Insert Into #Colaborador Values
    ('Roberson', 'Natália', 'Pedro', 'Lucas', 'Manoela', Null),
    ('Guilherme', 'Daniela', 'Caroline', Null, Null, Null)
    
    Select nome_colaborador From #Colaborador Where (cod_colab = 1)
    Union
    Select conjuge From #Colaborador Where (cod_colab = 1) and (conjuge is not Null)
    Union
    Select filho01 From #Colaborador Where (cod_colab = 1) and (filho01 is not Null)
    Union
    Select filho02 From #Colaborador Where (cod_colab = 1) and (filho02 is not Null)
    Union
    Select filho03 From #Colaborador Where (cod_colab = 1) and (filho03 is not Null)
    Union
    Select filho04 From #Colaborador Where (cod_colab = 1) and (filho04 is not Null)


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 19 de novembro de 2012 17:00
    Moderador
  • Olá Marcos.

    Obrigado pela preocupação, mas não foi resolvido ainda. Estou sem tempo para parar e verificar o Fórum, estou pesquisando e assim que conseguir posto aqui novamente,

    segunda-feira, 19 de novembro de 2012 18:36
  • Olá Roberson.

    Sou novato em C# e SQL Server, então tenho muito que aprender ainda. 

    Gostei da sua dica, vou implementar aqui no meu projeto.

    Ao seu código, vou testar assim que chegar em casa e se sobrar um tempinho, posto aqui novamente. Trabalho e faculdade não é nada fácil.

    Muito obrigado pela dica. Um grande abraço

    segunda-feira, 19 de novembro de 2012 18:38
  • Roberson.

    Fiz conforme você me indicou, e não aparece o nome do primeiro cadastro(colaborador).

    Ex: Fiz o Insert do Colaborador, com o COnjuge, filhos.

    Quando faço a UNION, me retorna todos os outros, menos o do Colaborador.

    Poderia me ajudar?

    Um abraço.

    segunda-feira, 11 de março de 2013 19:51
  • Olá Marcos.

    Não consegui resolver ainda.

    Estou tendo problemas para juntar todos os nomes no ComboBox.

    Um abraço.

    quarta-feira, 13 de março de 2013 14:51