none
Erro ao retornar nul RRS feed

  • Pergunta

  • Boa noite!

    tenho três consultas que exibe os resultados em texbox, mas quando o valor é null, ou vazio, da erro

     var conn = Conexao.Conex();
                sqlString_a_vencer = "SELECT SUM(valor_parc) FROM parcelas WHERE datavenc >= '" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "' AND pago = 0 ORDER BY datavenc";
                sqlString_vencidos = "SELECT SUM(valor_parc) FROM parcelas WHERE datavenc <= '" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "' AND pago = 0 ORDER BY datavenc";
                sqlString_Total    = "SELECT SUM(valor_parc) FROM parcelas WHERE pago = 0 ORDER BY datavenc";
    
                SQLiteCommand comm_a_vencer = new SQLiteCommand(sqlString_a_vencer, conn);
                SQLiteCommand comm_vencidos = new SQLiteCommand(sqlString_vencidos, conn);
                SQLiteCommand comm_total = new SQLiteCommand(sqlString_Total, conn);
    
                try
                {
                    conn.Open();
    
                    //*****************************************************
                    if (comm_a_vencer != null)
                    {
                        double total_a_vencer = double.Parse(comm_a_vencer.ExecuteScalar().ToString());
                        txt_a_vencer.Text = total_a_vencer.ToString("C");
                    }
                    else if (comm_vencidos != null)
                    {
                        double total_vencido = double.Parse(comm_vencidos.ExecuteScalar().ToString());
                        txt_vencido.Text = total_vencido.ToString("C");
                    }
                    else if (comm_total != null)
                    {
    
                        double total = double.Parse(comm_total.ExecuteScalar().ToString());
                        txt_total.Text = total.ToString("C");
                    }
                    else
                    {
                        
                    }
                    //********************************************************
    
    
                    conn.Close();

    e gostaria se o valor fosse null (vazio) as texbox fiquem assim R$0,00, já coloquei no else mas não resolvel, tentei de várias formas e não deu certo.

    Obs. Essa estrutura de if não esta funcionando perfeito também.

    quarta-feira, 11 de maio de 2016 03:29

Respostas

  • Bom dia,

    Guarde o retorno do "ExecuteScalar()" em uma "string" e faz o tratamento do retorno. Segue um exemplo:

    string retorno;
    //*****************************************************
    if (comm_a_vencer != null)
    {
        retorno = comm_a_vencer.ExecuteScalar().ToString();
        double total_a_vencer = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_a_vencer.Text = total_a_vencer.ToString("C");
    }
    else if (comm_vencidos != null)
    {
        retorno = comm_vencidos.ExecuteScalar().ToString();
        double total_vencido = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_vencido.Text = total_vencido.ToString("C");
    }
    else if (comm_total != null)
    {
        retorno = comm_total.ExecuteScalar().ToString();
        double total = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_total.Text = total.ToString("C");
    }
    else
    {
                        
    }

    Analisando seu código, notei que você possui variáveis que nunca serão utilizadas na mesma chamada. Ou seja, cada vez que entrar neste método será realizado diversos procedimentos mas no final apenas um "if" define o que realmente será utilizado ou executado.
    Neste caso você poderia otimizar colocando cada variável dentro da condição "if" específica ou se ainda preferir cria um método "genérico" que será chamado dentro do "if".

    Lembrando que não é uma correção, só uma dica para melhorar a performance, leitura, entendimento e limpeza no seu código.

    Espero ter ajudado.

    Att, 


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney quarta-feira, 11 de maio de 2016 11:39
    • Marcado como Resposta Marcos SJ quarta-feira, 11 de maio de 2016 14:38
    • Não Marcado como Resposta WR Services Wadson quarta-feira, 11 de maio de 2016 16:14
    • Marcado como Resposta WR Services Wadson quarta-feira, 11 de maio de 2016 16:14
    quarta-feira, 11 de maio de 2016 11:38

Todas as Respostas

  • Bom dia,

    Guarde o retorno do "ExecuteScalar()" em uma "string" e faz o tratamento do retorno. Segue um exemplo:

    string retorno;
    //*****************************************************
    if (comm_a_vencer != null)
    {
        retorno = comm_a_vencer.ExecuteScalar().ToString();
        double total_a_vencer = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_a_vencer.Text = total_a_vencer.ToString("C");
    }
    else if (comm_vencidos != null)
    {
        retorno = comm_vencidos.ExecuteScalar().ToString();
        double total_vencido = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_vencido.Text = total_vencido.ToString("C");
    }
    else if (comm_total != null)
    {
        retorno = comm_total.ExecuteScalar().ToString();
        double total = string.IsNullOrEmpty(retorno) ? 0 : double.Parse(retorno);
        txt_total.Text = total.ToString("C");
    }
    else
    {
                        
    }

    Analisando seu código, notei que você possui variáveis que nunca serão utilizadas na mesma chamada. Ou seja, cada vez que entrar neste método será realizado diversos procedimentos mas no final apenas um "if" define o que realmente será utilizado ou executado.
    Neste caso você poderia otimizar colocando cada variável dentro da condição "if" específica ou se ainda preferir cria um método "genérico" que será chamado dentro do "if".

    Lembrando que não é uma correção, só uma dica para melhorar a performance, leitura, entendimento e limpeza no seu código.

    Espero ter ajudado.

    Att, 


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney quarta-feira, 11 de maio de 2016 11:39
    • Marcado como Resposta Marcos SJ quarta-feira, 11 de maio de 2016 14:38
    • Não Marcado como Resposta WR Services Wadson quarta-feira, 11 de maio de 2016 16:14
    • Marcado como Resposta WR Services Wadson quarta-feira, 11 de maio de 2016 16:14
    quarta-feira, 11 de maio de 2016 11:38
  • Funcionou a parte que detecta que o retorno é null, mas os blocos de if não funcionam somente o primeiro  bloco, o resto não funciona.
    quarta-feira, 11 de maio de 2016 15:38
  • Funcionou fiz 3 Métodos e deu certo.

    Obrigado.

    quarta-feira, 11 de maio de 2016 16:15