Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Method Call from within a select statement returns
Message
From
23/06/2006 10:38:20
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01131155
Message ID:
01131159
Views:
10
You must use the parameter approach you mention. VFP tries to be smart, and since no parameters are passed, VFP only evaluates the function for the first record. BTW, this is also logically the correct way, IMHO.

>I have a select statement that calls a method to return a value:
>
>Following is a stripped down version to get the gist.
>
>   select vin_ref, thisform.yGetAging()as vin_aging
>      from scvndino
>
>*yGetAging Method*
>with thisform
>   do case	
>      case vin_duedate  >= .ydDate
>         return 'Current'
>      case between(vin_duedate,.ydDate-10,.ydDate - 1)
>	 return '1 - 10'
>      case between(vin_duedate,.ydDate-20,.ydDate - 11)
>	 return '11 - 20'
>      case between(vin_duedate,.ydDate-30,.ydDate - 21)
>	 return '21 - 30'
>      case between(vin_duedate,.ydDate-60,.ydDate - 31)
>	 return '31 - 60'
>      case between(vin_duedate,.ydDate-90,.ydDate - 61)
>	 return '61 - 90'
>      case between(vin_duedate,.ydDate-120,.ydDate - 91)
>	 return '91- 120'
>      otherwise
>	 return '121+'
>   endcase
>endwith
>
>
>
>Prior to VFP 9 this worked fine. I am finding now that the record pointer in the scvndino table is not on the correct record anymore in the method. If the select statement is going through a hundred records this method returns the results for the first record in the table all 100 times.
>
>Sending vin_duedate as a parameter to the method and replacing "vin_duedate" with this parameter DOES work. My concern is that I have code like this all over the place. Is there something else I'm missing?
Previous
Reply
Map
View

Click here to load this message in the networking platform