Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Matrix rate
Message
From
27/06/1999 19:07:46
Dovi Gilberd
Dovtware Consulting Inc
Miami, Florida, United States
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Title:
Miscellaneous
Thread ID:
00233562
Message ID:
00234570
Views:
33
hi barbara...how are you...i'm sorry to bother you again..
2 questions..why do i need the lsuccess..?
i took it of and i get as a result a false answer for all the calls
im using it like this..

function rate()
lparameter dialednr, code, calcrate, rate, n
LOCAL y

select rates
set order to tag code
seek left(view1.dialednr,6)
for n=1 to fcount()
if field(n)=upper(code)
rate = eval(field(n))
calcrate = rate*result

endif
endfor
y=rate
return rate
endfunc

what am i doing wrong




>Dovi,
>I STRONGLY feel that you should normalize your table as was discussed by Mark McCasland and me earlier in this thread. However, your function seems to get the information you want. You do have a couple of problems. I've rewritten it below - PLEASE be sure you check to see that the correct field names are used. Without your table structure and test data I have surely missed something. Note that you can only return ONE values from a function, but you CAN pass parameters by reference so the information is passed back.
>lSuccess =  rate(dialdnr, code, @CalcRate, @rate, @n,
>
>function rate()
>lparameter dialednr, code, calcrate, rate, n
>LOCAL lSuccess
>lSuccess = .F.
>
>select rates
>set order to tag code
>seek left(view1.dialednr,6)
>for n=1 to fcount()
>   if field(n)=upper(code)
>      rate = eval(field(n))
>      calcrate = rate*result
>      lSuccess = .T.
>   endif
>endfor
>
>return lSuccess
>Note that the values you need are returned by reference because you called them with the @ since in front of the parameters.
>
>You WILL have to adjust this to use your specific fields, but I hope this will get you started.
>
>Barbara
>
>>Hi barbara..how are you...im sorry to bother you..im stil dealing with the rate...im very new to fox, but im defending
>> myself however i can...boks, forums,,etc....Im sorry to bother you..please help me
>> regarding this..
>>
>> i created a function in my main program called rate()
>> like this
>>
>> key things about my problem
>> customer table's name is long_distance
>> the field in customers where i set the rates is long_distance.code
>> the calls made are in view1
>> the field that has the calls is named dialednr
>>
>> my rates table name is Rates and it looks like this
>>
>> code country rate 1 rate 2 rate n
>> 011575 Colombia .23 .24 .25
>>
>> i know that John doe has rate 2, and he made a call to 01157587654..
>> then that all with rate 2 to colombia should be billed at .24
>>
>> Now first i neeD to compare the first digits of the call against the rate table to see which country was called
>> if dialednr starts with 0 then take left 6 of dialednr compared with rates.code
>> if dialednr starts with 1 then take left 4 of dialednr compared with rates.code
>> then i need to compare long_distance.code (rate asigned) the correct column of rates table( meaning if john doe
>> had rate 3, make sure that it uses the fith column of rates table..
>> now that i know the rate and the country i could knwo the rate
>>
>>
>> im triying with this function to doit but its not working properly..
>> CAN YOU PLEASE HELP ME OUT....I COULD PAY YOU FOR YOUR SERVICES...
>>
>>
>> function rate()
>> lparameter dialednr,code,result,result,n
>> select rates
>> set order to tag code
>> seek left(view1.dialednr,6)
>> for n=1 to fcount()
>> if field(n)=upper(code)
>> return eval(field(n))*result
>> endif
>> endfor
>> rate=n
>> return rate
>> endfunc
>> return rate
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform