Dúvida com Input string was not in ..
Amigos, boa tarde.
Estou com um pequeno probelam no C#:
estou tentando converter para o tipo int um valor que vem de um datatable:
int valor = int.Parse(dt.Rows[0][4].ToString());
e me ocorre o seguinte erro: "Input string was not in a correct format.".
Imagino q alguns de vocês já tenham visto esse erro. Ele ocorre quando a aplicação tenta converter para o tipo int uma string vazia ou um valor não numérico.
OBS:
1) já usei Convert.ToInt32(dt.Rows[0][4].ToString()) e nada.
2) Esse erro acontece so quando do um publish na aplicação e coloco ela no servidor. na minha máquina, tudo funciona perfeitamente.
3) ja apliquei um refresh no IIS, mas tmb nao adiantou..
Não sei se isso teria a ver com permissão..
Alguém arrisca um palpite??
Obrigado.
Estou com um pequeno probelam no C#:
estou tentando converter para o tipo int um valor que vem de um datatable:
int valor = int.Parse(dt.Rows[0][4].ToString());
e me ocorre o seguinte erro: "Input string was not in a correct format.".
Imagino q alguns de vocês já tenham visto esse erro. Ele ocorre quando a aplicação tenta converter para o tipo int uma string vazia ou um valor não numérico.
OBS:
1) já usei Convert.ToInt32(dt.Rows[0][4].ToString()) e nada.
2) Esse erro acontece so quando do um publish na aplicação e coloco ela no servidor. na minha máquina, tudo funciona perfeitamente.
3) ja apliquei um refresh no IIS, mas tmb nao adiantou..
Não sei se isso teria a ver com permissão..
Alguém arrisca um palpite??
Obrigado.
Diego Gonçalves
Curtidas 0
Respostas
Joel Rodrigues
05/03/2013
Bom, como você mesmo disse, isso ocorre quando você tenta converter um string não numérico. Então garanta que só valores numéricos sejam convertidos.
GOSTEI 0
Robson Alves
05/03/2013
Ou utilize o Int32.TryParse antes de tentar efetuar o cast.
GOSTEI 0
Diego Gonçalves
05/03/2013
Então senhores,
as duas formas acima já foram tentadas. Inclusive já implementei as duas formas e testei na minha máquina e funcionou certo. mas quando a aplicação foi publicada no servidor, pintou esse problema..
é estranho pq não é um erro de ambiente, mas quando muda de ambiente o erro acontece.. rs
já olhei no log de eventos do windows, as a descrição do erro é igual ao que a aplicação emite...
as duas formas acima já foram tentadas. Inclusive já implementei as duas formas e testei na minha máquina e funcionou certo. mas quando a aplicação foi publicada no servidor, pintou esse problema..
é estranho pq não é um erro de ambiente, mas quando muda de ambiente o erro acontece.. rs
já olhei no log de eventos do windows, as a descrição do erro é igual ao que a aplicação emite...
GOSTEI 0
Joel Rodrigues
05/03/2013
Provavelmente o problema está nos dados que estão sendo retornados. Geralmente os dados que utilizamos para testes são diferentes dos que existem em ambiente de produção.
Essa coluna deveria estar retornando um valor não numérico? Se não, o problema pode estar antes, no momento da gravação desse dados que está registrando um valor inválido na coluna.
Essa coluna deveria estar retornando um valor não numérico? Se não, o problema pode estar antes, no momento da gravação desse dados que está registrando um valor inválido na coluna.
GOSTEI 0
Diego Gonçalves
05/03/2013
Não, essa coluna do excel possui somente valores numéricos.
GOSTEI 0
Joel Rodrigues
05/03/2013
Pode ser o formato. São apenas números inteiros?
Coloca uma condição pra verificar isso e exibe uma mensagem pra testar que valor está sendo passado.
Coloca uma condição pra verificar isso e exibe uma mensagem pra testar que valor está sendo passado.
GOSTEI 0
Diego Gonçalves
05/03/2013
sim sim, é somente inteiros.
e o lance da condição, foi feito e está retornando uma string vazia. por isso o erro acontece. mas o q mais ta me intrigando é o fato de que quando rodo o projeto local, o erro nao ocorre... o numero é exibido normalmente e a conversão é feita...
só quando publico a aplicação no servidor é que o erro acontece..
ja troquei a versão do OLEDB, mas tmb não funcionou.
ja limpei o cache do servidor e tmb não funcionou..
e o lance da condição, foi feito e está retornando uma string vazia. por isso o erro acontece. mas o q mais ta me intrigando é o fato de que quando rodo o projeto local, o erro nao ocorre... o numero é exibido normalmente e a conversão é feita...
só quando publico a aplicação no servidor é que o erro acontece..
ja troquei a versão do OLEDB, mas tmb não funcionou.
ja limpei o cache do servidor e tmb não funcionou..
GOSTEI 0
Joel Rodrigues
05/03/2013
É uma linha específica que dá isso ou na primeira já ocorre?
GOSTEI 0
Diego Gonçalves
05/03/2013
É em uma linha específica..
a linha é essa:
int valor = int.Parse(dt.Rows[0][4].ToString());
acima dela, tem várias outras coisas, como a conexão com o excel, por exemplo e o preenchimento do datatable..
a linha é essa:
int valor = int.Parse(dt.Rows[0][4].ToString());
acima dela, tem várias outras coisas, como a conexão com o excel, por exemplo e o preenchimento do datatable..
GOSTEI 0
Joel Rodrigues
05/03/2013
Não, não, me refiro à linha da tabela, o registro. No primeiro registro que é lido já dá o erro?
GOSTEI 0
Diego Gonçalves
05/03/2013
dá sim
GOSTEI 0
Joel Rodrigues
05/03/2013
Cara, vamos começar a "apelar":
- O idioma da máquina cliente é o mesmo da sua, onde a aplicação já foi testada?
- O idioma da máquina cliente é o mesmo da sua, onde a aplicação já foi testada?
GOSTEI 0