Usuário com melhor resposta
Usando vários registros em uma COMBOBOX.

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.
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.brSe 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.- Marcado como Resposta Gustavo M. Guimarães segunda-feira, 17 de dezembro de 2012 13:54
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.
-
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
-
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
-
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.
-
-
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.brSe 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.- Marcado como Resposta Gustavo M. Guimarães segunda-feira, 17 de dezembro de 2012 13:54
-
-
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
-
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.
-