Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Matrix rate
Message
De
29/06/1999 14:45:21
Dovi Gilberd
Dovtware Consulting Inc
Miami, Floride, États-Unis
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Divers
Thread ID:
00233938
Message ID:
00235410
Vues:
28
hi mark how are you..could you plese help me out...i have a function that is not working properly

what i need to do is the following

johndoe made a call to 0115758999999. he has a preset rate of rate2
according to my rate table taht call should be at .22 cents

code country rate1 rate2 raten
0115758 Colombia .23 .22 .28

im using this function is a bbit lon..cold you pleas etake a pick at it and thell me if there is something wrong with it..pleaseee

FUNCTION GetRate
LOCAL lcInAlias, lcSeekValue, lcCheckDigit, lcAssertSetting, llFoundPrefix, lnResult
lcInAlias = ALIAS() && save the currently selected work area
lcAssertSetting = SET('ASSERTS') && and the SET ASSERTS mode
lcSeekValue = NULL &&default seek value to NULL
lnResult = NULL &&default result to NULL
llFoundPrefix = .F. &&And by default the seek failed
SET ASSERTS ON && enable asserts
IF ! USED('long_distance')
* if the lookup table isn't in use already in this datasession, open it
USE long_distance IN 0 SHARED && make sure the table is in use
ENDIF
SELECT long_distance && Select the lookup table before trying to find in it
SET ORDER TO resellerid &&is correct && in the right sort order
*
* I use a local variable so that the LEFT() function is only called once,
* and the code becomes a tad clearer in the DO CASE
*
lcCheckDigit = LEFT(view1.dialednr,1)
* Check how many characters to use for lookup based on first character
DO CASE
CASE lcCheckDigit = '1'
lcSeekValue = LEFT(view1.dialednr,4)
CASE lcCheckDigit = '0'
lcSeekValue = LEFT(view1.dialednr,6)
CASE lcCheckDigit = '#'
lcSeekValue = LEFT(view1.dialednr,3)
CASE LEFT(view1.dialednr,3) == "411"
* 411 calls cost $0.75 each
lnResult = .75
CASE LEFT(view1.dialednr,3) == "911"
* 911 calls cost $0.00 each
lnResult = 0.00
CASE LEN(ALLTRIM(CHRTRAN(view1.dialednr, '-',''))) < 7
lnResult = 0

OTHERWISE
* Oops - the dialednr isn't in the form we expected - use an ASSERT
* to let us know an error occurred while developing, to let us go
* into the debugger when the error occurs. ASSERT gives us a message
* telling us what we think went wrong as a part of the statement
*ASSERT .F. MESSAGE 'Lead dialednr character "' + lcCheckDigit + '" not supported!'
lnResult = 0
ENDCASE
IF ! ISNULL(lcSeekValue)
* the dialednr started with a valid character, so try to find the prefix
* we grabbed from our rate table
llFoundPrefix = SEEK(lcSeekValue)
ENDIF
IF llFoundPrefix
* found it - save the rate we found!
lnResult = long_distance.rate
ELSE
* oops - not in our lookup table - use ASSERT to let me know
* what went wrong
*ASSERT ! ISNULL(lcSeekValue) MESSAGE 'Cound not find number prefix "' + lcSeekValue +'" in long_distance table'
ldresult=0
ENDIF
*Restore the initially-selected work area and the ASSERT setting
IF ! EMPTY(lcInAlias)
SELECT (lcInAlias)
ELSE
SELECT 0
ENDIF
SET ASSERTS &lcAssertSetting
RETURN lnResult
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform