Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Functions in a select
Message
From
25/08/2008 15:46:57
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01341594
Message ID:
01341611
Views:
18
UDF forces Select-SQL code to perform as SCAN, so writing SCAN loop could be the way to clarify the code with no loss of speed.

>Good point! I would not use UDF, but a derived table instead.
>
>>There are two problems with your second example:
>>1. You should specify field size when calling the function, e.g.
>>select 0000+GetExpendituresBySubelement(elementnum) as expended
>>2. Secondly, (more important) it is risky to change active work area within the function while running select-SQL, i.e. this code is not reliable.
>>
>>
>>>This function
>>>
>>>function GetExpendituresBySubElement
>>>lparameters lnSubElement
>>>local lnOldWorkArea, lnRetVal
>>>dimension lnRetval(1)
>>>lnOldWorkArea = select(0)
>>>
>>>select  sum(amount) ;
>>>from tip ;
>>>inner join ledger on ledger.tip_id = tip.tip_id and source="RTA" ;
>>>where val(substr(sponsor_id,5,2)) = lnSubelement;
>>>into Array lnRetVal
>>>
>>>select(lnOldWorkArea)
>>>return iif(isnull(lnRetVal),0,lnRetVal)
>>>
>>>seems to work OK when called with a single value like this
>>>
>>>? GetExpendituresBySubelement(2)
>>>
>>>But when embedded in another select like this
>>>
>>>select *, GetExpendituresBySubelement(elementnum) as expended ;
>>>from rta_elements ;
>>>order by elementnum
>>>
>>>I get only 0's and *'s. Can someone please explain?
>>>
>>>Thanks
Edward Pikman
Independent Consultant
Previous
Reply
Map
View

Click here to load this message in the networking platform