2009-08-02 8 views
0

J'ai actuellement cette ligne de code qui a travaillé pour les 6 derniers mois:Toute raison pour laquelle IsNumeric() échoue sur un nombre?

If IsNumeric(txtProductID.Text) Then 
    ...do stuff 
Else 
    Dim msg As String = "Error!" 
End If 

Tout à coup, peu importe quel genre d'entrée est mis en txtProductID (y compris les numéros simples), il échoue! Y a-t-il une raison pour que je devienne fou de ça?

+0

Comment cela échoue-t-il? Est-ce qu'il renvoie des valeurs erronées? Est-ce qu'il y a une sorte d'exception? – jpfollenius

+1

Echoue de quelle façon? Retourner false, ou lancer une erreur? Pouvez-vous reproduire cela en dehors d'un formulaire de saisie? Essayez d'imprimer txtProductID.Text avant de le transmettre à IsNumeric, pour vous assurer que vous le transmettez à ce que vous pensez le transmettre. –

+0

merci Michael, voir ma réponse ci-dessous. Je me sens stupide. – Jason

Répondre

0

heu ... je suis un idiot ... merci pour votre aide les gars, mais apparemment je nettoyais toute ma forme avant d'accepter la saisie, donc "" ne passera jamais comme "IsNumeric". S'il vous plaît ne pas regarder cette question à nouveau. Je me sens malade.

Merci encore pour votre aide.

+0

peut-être le temps de mordre la balle et appuyez sur le bouton de suppression ... – mmr

+0

Nous faisons tous des erreurs comme ça de temps en temps . Je suis juste content que l'expliquer ici vous a aidé à le retrouver. –

2

Essayez la chaîne Trim() avant de la transmettre à la fonction. De plus, plutôt que d'utiliser une fonction spécifique VB comme IsNumeric, vous pouvez essayer une approche comme celle-ci:

Dim input as Integer 

If Integer.TryParse(txtProductID.Text, input) Then 
    ....do stuff with input 
Else 
    Dim msg as String = "Error!" 
End if 

Si votre numéro est un nombre décimal, il existe des fonctions correspondantes sur Double et Single ainsi.

En ce qui concerne la raison particulière que IsNumeric échoue, je ne pourrais pas vous dire. Je peux vous dire, cependant, que j'ai toujours trouvé utile de s'en tenir aux fonctions compatibles BCL qui sont indépendantes de la langue plutôt que de la langue, comme IsNumeric, Str, etc.

3

sombre, mais une chose à surveiller est que peut-être quelqu'un a écrit une méthode privée appelée IsNumeric dans la même classe. Êtes-vous sûr que le code ci-dessus exécute Microsoft.VisualBasic.IsNumeric()? Si vous placez votre curseur sur IsNumeric et appuyez sur F12 où pointe la définition?

+0

je suis le seul en développement et je n'ai pas écrit une autre méthode IsNumeric ... thx – Jason

Questions connexes