none
C# Formulário - Como faço média por litro com Km do veículo cadastrado no banco RRS feed

  • Pergunta

  • Olá pessoal, estou postanto aqui porque sou iniciante e pesquisei muito e não encontrei uma solução que funcionasse pra mim. Estou criando um programa de controle de abastecimento com C# e SQL Server 2012, criei uma tabela Lancamento com os campos de id, numero_requisicao, km_veiculo, litros_abastecidos, valor_por_litro, valor_total e media_veiculo

    então...

    o problema é que não sei como fazer a média, pensei se é possível eu colocar o textbox ou label no Form que receba o km_veiculo maior cadastrado porém menor que o digitado no km_veiculoTextBox no formulado naquele momento. Tem algum comando SQL que eu possa colocar no evento keypress do km_veiculoTextBox que pegue esse km maior cadastrado que seja menor q o digitado pra mim poder assim calcular a média ou ultimo textbox?

    quarta-feira, 28 de novembro de 2012 12:38

Respostas


  • string sqlquery = "SELECT MAX(Km_Veiculo) FROM MediaTeste WHERE Km_Veiculo < " + kilometragem;
    SqlCommand command = new SqlCommand(sqlquery, connection);
    SqlDataReader sdr = command.ExecuteReader();
    TextBox.Text = sdr.ToString();
    



    Thais Oliveira

    Analista Desenvolvedora

    • Marcado como Resposta Tom Comptom BR2 quarta-feira, 28 de novembro de 2012 17:57
    quarta-feira, 28 de novembro de 2012 16:07
  • Tom,

    Um comando SQL que eu acho que possa te ajudar:

    SELECT MAX(Km_Veiculo) FROM MediaTeste WHERE Km_Veiculo < 10

    No qual você seleciona o maior valor da coluna Km_Veiculo da tablea MediaTeste onde Km_Veiculo é menor que 10. Esse 10, no caso, seria aquele no seu text box.
    • Editado ßruno quarta-feira, 28 de novembro de 2012 13:19
    • Marcado como Resposta Tom Comptom BR2 quarta-feira, 28 de novembro de 2012 17:57
    quarta-feira, 28 de novembro de 2012 13:17

Todas as Respostas

  • Olá Tom,

    Tá um pouco confuso.

    1º - O que seria essa média?

    2º -Você quer uma média geral?


    Thais Oliveira

    Analista Desenvolvedora

    quarta-feira, 28 de novembro de 2012 13:02
  • Oi Thais, obrigado pela disposição :)

    seria a média de kilometros por litros abastecidos

    não seria a média geral, seria a média naquele momento do cadastro, por isso queria filtrar o km que ja estivesse cadastrado com o maior valor porém menor que o digitado no momento do cadastro no km_veiculoTextBox

    quarta-feira, 28 de novembro de 2012 13:12
  • Tom,

    Um comando SQL que eu acho que possa te ajudar:

    SELECT MAX(Km_Veiculo) FROM MediaTeste WHERE Km_Veiculo < 10

    No qual você seleciona o maior valor da coluna Km_Veiculo da tablea MediaTeste onde Km_Veiculo é menor que 10. Esse 10, no caso, seria aquele no seu text box.
    • Editado ßruno quarta-feira, 28 de novembro de 2012 13:19
    • Marcado como Resposta Tom Comptom BR2 quarta-feira, 28 de novembro de 2012 17:57
    quarta-feira, 28 de novembro de 2012 13:17
  • E aí deu certo?

    Thais Oliveira

    Analista Desenvolvedora

    quarta-feira, 28 de novembro de 2012 13:31
  • Tom,

    Um comando SQL que eu acho que possa te ajudar:

    SELECT MAX(Km_Veiculo) FROM MediaTeste WHERE Km_Veiculo < 10

    No qual você seleciona o maior valor da coluna Km_Veiculo da tablea MediaTeste onde Km_Veiculo é menor que 10. Esse 10, no caso, seria aquele no seu text box.

    O SELECT Max deu exatamente o que eu estava procurando :D só estou com dificuldades pra colocar esse valor do resultado em um textbox, mas ja resolveu o sql

    obrigado, 

    ==

    Thais

    Deu certo sim, só falta eu aprender a colocar o resultado no textbox e estou sem saber como.

    quarta-feira, 28 de novembro de 2012 14:54

  • string sqlquery = "SELECT MAX(Km_Veiculo) FROM MediaTeste WHERE Km_Veiculo < " + kilometragem;
    SqlCommand command = new SqlCommand(sqlquery, connection);
    SqlDataReader sdr = command.ExecuteReader();
    TextBox.Text = sdr.ToString();
    



    Thais Oliveira

    Analista Desenvolvedora

    • Marcado como Resposta Tom Comptom BR2 quarta-feira, 28 de novembro de 2012 17:57
    quarta-feira, 28 de novembro de 2012 16:07
  • Adaptei como o código acima, mas devo estar deixando passar alguma coisa, pois está recebendo este resultado no kmtextbox ao invés do valor na tabela: System.Data.SqlClient.SqlDataReader

    meu código ficou assim:

                    conexao.Open();
                    string sqlquery = "SELECT MAX(km_veiculo) FROM Lancamento WHERE km_veiculo < " + km_veiculoTextBox.Text;
                    SqlCommand command = new SqlCommand(sqlquery, conexao);
                    SqlDataReader sdr = command.ExecuteReader();
                    kmTextBox.Text = sdr.ToString();
                    conexao.Close();

    quarta-feira, 28 de novembro de 2012 16:48
  • Substitua o command.ExecuteReader por command.ExecuterScalar().

    Se você quer um único valor a partir do banco de dados, use o método ExecuteScalar em vez de usar um DataReader.

    Veja se resolve.


    Thais Oliveira

    Analista Desenvolvedora

    quarta-feira, 28 de novembro de 2012 17:17
  • Funcionou :D

    Muito obrigado Bruno Curbani Goettmann e Thais Oliveira.

    quarta-feira, 28 de novembro de 2012 18:00