Yeah, but these things will always crap out on you if you don't to some checking to
see if the entry
is a valid numeric to start.
Here is a Stored proc that I use for this:
*Note: the line "IF vchar NOT IN ('.','0','1','2','3','4','5','6','7','8','9','0')
THEN". You may
add the $ sign if you expect your user to add that to the entry.
*(spisdig mod 072201)
CLEAR VAR MICRORIM_RETURN, stp_return, vret
SET VAR p1 TEXT
SET VAR vslen INTEGER = 0
SET VAR vslen = (SLEN(.p1))
SET VAR vcnt = 1
SET VAR vchar TEXT
SET V vret INTEGER = 1
WHILE vcnt <= vslen THEN
SET VAR vchar = (SGET(.p1,1,.vcnt))
IF vchar NOT IN ('.','0','1','2','3','4','5','6','7','8','9','0') THEN
SET V vret = 0
SET V vslen = 0
BREAK
ELSE
SET V vret = 1
ENDIF
SET V vcnt = (.vcnt + 1)
ENDWHILE
CLEAR VAR p1, vslen, vcnt, vchar
IF vret = 1 THEN
RETURN (1)
ELSE
RETURN (0)
ENDIF
RETURN
An Example of how I call this SP:
LABEL bgdiaquo
CLEAR VAR vres1
DIALOG 'Enter Quote Number To Change' vres1=10 vk1 1 AT 10
IF vk1 <> '[enter]' THEN
GOTO ndproc
ENDIF
IF (SLEN(.vres1)) = 0 THEN
SET VAR vmsg = ('You must Enter a Valid Number. Your Entry' & +
'"NONE"')
PAUSE 2 USING .vmsg AT CENTER CENTER
GOTO bgdiaquo
ENDIF
SET VAR p1 TEXT = .vres1
SET VAR vtrue = (CALL sp_isdig(.p1))
IF vtrue = 0 THEN
SET VAR vmsg = ('"' + .vres1 + '"' & 'Is Not a valid number.')
SET VAR vmsg = (.vmsg & 'You must Enter a Valid Number')
PAUSE 2 USING .vmsg AT CENTER CENTER
GOTO bgdiaquo
ENDIF
SET VAR xnum INTEGER = (INT(.vres1))
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: "RBASE-L Mailing List" <[EMAIL PROTECTED]>
Sent: Wednesday, September 24, 2003 10:07 AM
Subject: [RBASE-L] - Re: Convert Text to Currency
> Ben,
>
> Worked like a charm :)
>
> Thank you!!!!
>
> Damon
>
>
> In a message dated 9/24/2003 11:01:30 AM Eastern Daylight Time, [EMAIL PROTECTED]
> writes:
>
> > Set v vCurVar Curr = 0
> >
> > > dialog .vMessage vInput = 14 vKey 1 caption .vcap at
> > center center
> > > Var vInput Text
> >
> > Set v vCurVar = .vInput
>
>