Dúvida com Input string was not in ..

05/03/2013

3

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.
Responder

Posts

05/03/2013

Joel Rodrigues

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.
Responder

06/03/2013

Robson Alves

Ou utilize o Int32.TryParse antes de tentar efetuar o cast.
Responder
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...
Responder

06/03/2013

Joel Rodrigues

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.
Responder
Não, essa coluna do excel possui somente valores numéricos.
Responder

06/03/2013

Joel Rodrigues

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.
Responder
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..

Responder

06/03/2013

Joel Rodrigues

É uma linha específica que dá isso ou na primeira já ocorre?
Responder
É 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..
Responder

07/03/2013

Joel Rodrigues

Não, não, me refiro à linha da tabela, o registro. No primeiro registro que é lido já dá o erro?
Responder
dá sim
Responder

07/03/2013

Joel Rodrigues

Cara, vamos começar a "apelar":
- O idioma da máquina cliente é o mesmo da sua, onde a aplicação já foi testada?
Responder