Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

N3lson

[Resolvido] sum(?) return null

Mensagens Recomendadas

N3lson

boas estou a ter um problema, criei uma função para calcular a soma de alguns campos, funcionou correctamente até que apanhou campos com valor 0, ou vazio.

Agora dá erro de DBNULL ... 

Aqui está a função, alguém consegue me ajudar ?

 // Estatisticas posturas
        public int postStat(string campo, int postura)
        {
            int? total= 0;

            string s = "SELECT SUM([" + campo + "]) AS total FROM Posturas WHERE postura=@postura;";

            using (OleDbConnection con = new OleDbConnection(cfg.connectionString))
            {
                using (OleDbCommand cmd = new OleDbCommand(s, con))
                {
                    con.Open();

                    cmd.Prepare();
                    cmd.Parameters.AddWithValue("@postura", postura);

                    OleDbDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        total = Convert.ToInt32(reader["total"]);
                    }
                }
                con.Close();
            }
            return (int)total;
        }

 

 


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

Corrigido

Alterei o

total = Convert.ToInt32(reader["total"]);

por

total = reader["total"] != DBNull.Value ? Convert.ToInt32(reader["total"]) : 0;

 

  • Voto 1

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Podes fazer isso diretamente na query, de forma a garantir que a mesma retorna sempre um valor inteiro:

string s = "SELECT ISNULL(SUM([" + campo + "]), 0) AS total FROM Posturas WHERE postura=@postura;";

 

  • Voto 2

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.