IsNumeric gives error

E

eje

IsNumeric(value) should return false if value "can not be
successfully converted to a Double." Instead I get the
following error message: "Input string was not in a
correct format."

I use the following function in a validating class to use
when needed. (Value = H880118A gave the error (like
other 'unconvertible' strings))

Public Function Numeric(ByVal value) As Boolean
If CType(value, String).Length = 0 Then
m_msg = "Value is empty"
Return False
End If
If IsNumeric(value) Then
Return True
Else
m_msg = "Value isn't numeric"
Return False
End If

End Function

What to do?
Eje
 
C

Cor Ligthert

Hi Eje,

You can set Option Strict On to solve this problem, I think that that makes
it probably direct clear to you.

Cor
 
M

Marina

You should still always have option strict on.

You can either make the parameter an Object, or have several different
versions of the method, with each one having a parameter of a different type
(and then potentially have them all forwarded to one method that contains
all the actual logic).

Now, is what being passed here an actual string, or something else? Can you
reproduce this behavior by just calling IsNumeric from a little test program
and passing it in some string that cannot be converted to a numeric?
 
C

Cor Ligthert

Hi Eje,

That was what I was thinking however would let you give the answer.

As usuall would my answer have been almost the same as from Marina when I
had answered you before her, and therefore I add nothing to her answer.

:)

Cor
 
G

Guest

Thanks for helping me Marina and Cor.
First to answer your question, Marina. In my actual
application the passed values are strings. I import
textfiles with delimiter separated records and have to
check every value before I pass the values on to the
database.
I made the following tests (See my comments in the
function Test):

Option Strict On
'...

Public Function test() As Boolean
Dim indata As Object
Dim MyCheck As Boolean
indata = "53"
MyCheck = Numeric(indata) 'No problem
indata = "45 abc"
MyCheck = Numeric(indata) 'Still gives error
indata = "abc"
MyCheck = Numeric(indata) 'Still gives error
End Function

Public Function Numeric(ByVal MyVar As Object) As
Boolean
Dim MyCheck As Boolean
MyCheck = IsNumeric(MyVar)
Return MyCheck
End Function

Compare this example from the Help:

Dim MyVar As Object
Dim MyCheck As Boolean
' ...
MyVar = "53" ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns True.
' ...
MyVar = "459.95" ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns True.
' ...
MyVar = "45 Help" ' Assign value.
MyCheck = IsNumeric(MyVar) ' Returns False.
 
C

Cor Ligthert

Hi Anon,

Why not as this with option Strict On
See inline bellow

I hope this helps?

Cor

Option Strict On
'...

Public Function test() As Boolean
Dim indata As Object
Dim MyCheck As Boolean
indata = "53"

MyCheck = Numeric(indata.ToString) 'No problem
indata = "45 abc"

MyCheck = Numeric(indata.ToString) 'Still gives error
indata = "abc"

MyCheck = Numeric(indata.TosString) 'Still gives error
 
G

Guest

Hi cor,
If you still check this. I found the error. I had to
change an option in the menu Debug/Exceptions

Thanks for your help

Eje
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top