none
Arithmetic overflow no SqlDataAdapter.Fill(DataSet) RRS feed

  • Pergunta

  • Bom dia pessoal !

     

    Tenho uma SPROC que me retorna um conjunto pequeno de dados.

    Chamando ela pelo Management Studio o resultado vem normalmente.

     

    Na aplicação chamo essa SPROC normalmente, como faço com todas as outras porem no método Fill do SqlDataAdapter ela está dando uma excessão com a seguinte descrição "Arithmetic overflow error converting expression to data type nvarchar.".

     

    Alguma ideia do que possa estar acontecendo ?

     

    Muito obrigado a todos !

    terça-feira, 7 de junho de 2011 17:38

Todas as Respostas

  • Thiago, se possível envia seu código.

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    terça-feira, 7 de junho de 2011 18:26
  • Enviando a função que chama a SPROC, lembrando que ela geralmente funciona. Só não funciona quando o fkGrupo passado é 13.

     

            public static DataTable GetOSsAbertasDuranteNoite(DateTime data, Int32 pkGrupo = -1)
            {
                SqlConnection cn = new SqlConnection(Utilities.ConnectionString);
                SqlCommand cm = new SqlCommand();
                SqlDataAdapter adapter;
                DataSet ds = new DataSet();
     
                cm.CommandType = CommandType.StoredProcedure;
                cm.CommandText = "GetRelatorioOsAbertaDuranteNoite";
                cm.Connection = cn;
     
                cm.Parameters.AddWithValue("@data", data);
     
                if (pkGrupo > -1)
                    cm.Parameters.AddWithValue("@pkGrupo", pkGrupo);
     
                adapter = new SqlDataAdapter(cm);
     
                try
                {
                    adapter.Fill(ds);
                    return ds.Tables[0];
                }
                catch
                {
                    throw;
                }
                finally
                {
                    cn.Close();
                }
            }
    terça-feira, 7 de junho de 2011 18:38
  • Descobri a origem do problema.

    Na verdade só dá o problema quando uma função escalar que tenho que transforma o resultado de um DateDiff em horas:minutos:segundo. Tirando essa função e só mostrando o resultado do DateDiff funcionou.

    Agora pq no management studio funciona corretamente e na aplicação não ?

    terça-feira, 7 de junho de 2011 19:05
  • Thiago, realmente é estranho, esta função é customizada por você no SQL?  Bom de qualquer forma é estranho.

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    terça-feira, 7 de junho de 2011 22:01
  • O problema deve ser na sua query
    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    quarta-feira, 8 de junho de 2011 11:59
  • Thiago,

    Que estranho hein... Pela mensagem, esse erro está vindo direto do banco... Tem certeza que passando o código 13 direto no Management Studio ele funciona corretamente? Quando você executa no Management Studio, ele exibe duas abas de resultado, uma com os dados e outra com as mensagens... Tem certeza que na aba de mensagens você não está recebendo esse erro também?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sexta-feira, 10 de junho de 2011 00:18
    Moderador