none
SqlDataReader para preencher diferentes combobox dentro do evento load do form, com dados de tabelas distintas. RRS feed

  • Discussão Geral

  • Olá. 

    Estou montando um formulário em que existem vários combobox diferentes. Acontece que quero que todos esses combobox sejam preenchidos com dados de duas tabelas do SQL server.

    O combobox  cbnomepaciente, deve ser preenchido com o que está na coluna NOMEPACIENTE da tabela PACIENTES. Os combobox  cb1dia1,  cb2dia1,  cb1dia2, etc, devem ser preenchidos com o que está na coluna NOMEFUNCIONARIO, da tabela FUNCIONARIOS. Acontece que quando inicio a aplicação, o datareader é preenchido com todos os dados de ambas as colunas, só que na hora de popular os combobox, ele popula ambos com a mesma quantidade de itens da coluna maior. Por exemplo, na tabela PACIENTES, só existe um único nome cadastrado, "Rafael", enquanto que na tabela FUNCIONÁRIOS, existem 10. Como o datareader é preenchido com ambas as colunas, na hora de popular os combobox, ele preenche o nome "Rafael" no cbnomepaciente e o primeiro nome da coluna NOMEFUNCIONARIO no em cada cb1dia1, cbdia2, etc. Depois, ele reinicia para adicionar o restante dos nomes da coluna NOMEFUNCINÁRIOS, mas nesse processo, ele passa novamente pelo cbnomepaciente e repete a adição do nome "Rafael". Ele faz isso até terminar de preencher todos os nomes da coluna NOMEFUNCIONÁRIOS nos respectivos combobox. 

    Gostaria de saber uma forma de fazer com que dentro do evento load, quando eu for realizar essa query pra preencher o datareader e popular os combobox, como eu poderia fazer para que cada combobox recebesse o mesmo número de itens exato ao da coluna com a qual estou preenchendo ele.


    Segue o código:

      private void TabelaEscalas_Load(object sender, EventArgs e)
            {
                string users;
                string users2;
    
                SqlConnection conexao = new SqlConnection("Integrated Security = SSPI; Persist Security Info = False; Initial Catalog = CLÍNICA; Data Source = SISTEM-PC\\SQLEXPRESS");
                conexao.Open();
                SqlCommand instrucoes = new SqlCommand("SELECT NOMEFUNCIONARIO, NOMEPACIENTE FROM FUNCIONARIOS, PACIENTES", conexao);
    
                try
                {
                    conexao.Open();
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
    
                SqlDataReader rd1 = null;
                rd1 = instrucoes.ExecuteReader();
    
                while (rd1.Read())
                {
                    users = rd1["NOMEFUNCIONARIO"].ToString();
                    users2 = rd1["NOMEPACIENTE"].ToString();
    
                    cbnomepaciente.Items.Add(users2);
    
                    cb1dia1.Items.Add(users);
                    cb2dia1.Items.Add(users);
                    cb1dia2.Items.Add(users);
                    cb2dia2.Items.Add(users);
                    cb1dia3.Items.Add(users);
                    cb2dia3.Items.Add(users);
                    cb1dia4.Items.Add(users);
                    cb2dia4.Items.Add(users);
                    cb1dia5.Items.Add(users);
                    cb2dia5.Items.Add(users);
                    cb2dia6.Items.Add(users);
                    cb1dia6.Items.Add(users);             
    
                }
    
            }

    sexta-feira, 1 de dezembro de 2017 07:27

Todas as Respostas