none
Colocar Dados do Banco(MySql) com Inner Join em uma Label C# RRS feed

  • Pergunta

  • Boa Noite;

    Estou fazendo um select e quero que retorne apenas um valor na label:

    Exemplo: 330. Pois ele está fazendo a soma de uma coluna. Só que estou utilizando um inner join no comando select.

    Já testei esse código em datagridview e esta funcionando, só que quando passo pra label está dando errado, pois ele não reconhece a coluna cd_procedimento.

    Meu codigo esta assim:

                conexaoDataSet = new DataSet();
                conexao = new MySqlConnection("SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;");
            
    
    
                try
                {
    
                    conexao.Open();
                    string sql = "select SUM(d.Preco) from procedimentos d inner join consultas a on d.cd_procedimento = a.cd_procedimento  where d.cd_procedimento='" + comboBox2.SelectedValue + "' and Dataa between  '" + dateTimePicker1.Value.Date.ToString("yyyy-MM-dd") + "' and '" + dateTimePicker2.Value.Date.ToString("yyyy-MM-dd") + "%' group by d.Cd_Procedimento";
                    MySqlDataAdapter conexaoAdpter = new MySqlDataAdapter(sql, conexao);
                    conexaoAdpter.Fill(conexaoDataSet, "consultas");
    //Está dando erro aqui nesta linha, não reconhece a coluna "cd_procedimento"
                    label8.Text = Convert.ToString(conexaoDataSet.Tables["consultas"].Rows[0]["cd_procedimento"]);
                   
                   
                    
    
    
                }
                catch (MySqlException ex)
                {
    
                    MessageBox.Show("Erro de conexão" + ex);
    
                }
    
                conexao.Close();
            
    Alguém pode me ajudar?!



    • Editado Andressa.s segunda-feira, 14 de novembro de 2016 01:34
    segunda-feira, 14 de novembro de 2016 01:32

Respostas

  • Olá Andressa,

    A resposta do André acredito que resolva o seu problema. Só uma sugestão que gostaria de lhe dar.

    Sempre que for trabalhar com parâmetros nas suas consultas, procure não realizar concatenações para evitar o Sql Injection nas suas aplicações.

    Segue um link para lhe ajudar no entendimento.

    http://zetcode.com/db/mysqlcsharptutorial/

     Espero ter ajudado.


    Klayton Gomes (Software Architecture) MCP/MCTS/MCAD/MCPD/MCSD Solution Developer

    segunda-feira, 14 de novembro de 2016 11:02
  • Olá,

    Acredito que esteja faltando definir o nome da coluna no seu comando SQL, tenta dessa forma:

     string sql = "select SUM(d.Preco) AS cd_procedimentos from procedimentos d inner join consultas a on d.cd_procedimento = a.cd_procedimento  where d.cd_procedimento='" + comboBox2.SelectedValue + "' and Dataa between  '" + dateTimePicker1.Value.Date.ToString("yyyy-MM-dd") + "' and '" + dateTimePicker2.Value.Date.ToString("yyyy-MM-dd") + "%' group by d.Cd_Procedimento";

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 14 de novembro de 2016 01:45

Todas as Respostas

  • Olá,

    Acredito que esteja faltando definir o nome da coluna no seu comando SQL, tenta dessa forma:

     string sql = "select SUM(d.Preco) AS cd_procedimentos from procedimentos d inner join consultas a on d.cd_procedimento = a.cd_procedimento  where d.cd_procedimento='" + comboBox2.SelectedValue + "' and Dataa between  '" + dateTimePicker1.Value.Date.ToString("yyyy-MM-dd") + "' and '" + dateTimePicker2.Value.Date.ToString("yyyy-MM-dd") + "%' group by d.Cd_Procedimento";

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 14 de novembro de 2016 01:45
  • Olá Andressa,

    A resposta do André acredito que resolva o seu problema. Só uma sugestão que gostaria de lhe dar.

    Sempre que for trabalhar com parâmetros nas suas consultas, procure não realizar concatenações para evitar o Sql Injection nas suas aplicações.

    Segue um link para lhe ajudar no entendimento.

    http://zetcode.com/db/mysqlcsharptutorial/

     Espero ter ajudado.


    Klayton Gomes (Software Architecture) MCP/MCTS/MCAD/MCPD/MCSD Solution Developer

    segunda-feira, 14 de novembro de 2016 11:02
  • Boa Noite,

    Funcionou....Era exatamente isso!

    Muito Obrigada!!! 

    Só mais uma pergunta, como eu faria pra exibir uma mensagem de erro caso não exista nenhum registro na lista, já tentei um if e else só que está dando erro...se puderem ajudar mais essa, agradeceria.

    :)

    • Editado Andressa.s segunda-feira, 14 de novembro de 2016 22:28
    segunda-feira, 14 de novembro de 2016 21:48
  • Boa Noite,

    Obrigada pela dica, vou dar uma estudada hehe...

    :)

    segunda-feira, 14 de novembro de 2016 21:50
  • Tente fazer uma verificação desse tipo para saber se tem linhas ou não:

    if (conexaoDataSet.Tables["consultas"].Rows.Count > 0)
    {
        //TEM LINHAS
    }
    else
        MessageBox.Show("Não há dados!");

    Não esqueça de marcar a resposta que te ajudou para finalizar o tópico.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 15 de novembro de 2016 00:57
  • Muito Obrigada!

    :)

    quarta-feira, 16 de novembro de 2016 20:54