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:39:34
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivia
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01131155
Message ID:
01131161
Views:
13
Since you are selecting data from the same table, it seems safer to pass the criterion as a parameter:
select ... ThisForm.yGetAging(vin_duedate) as vin_aging ...

* The method
lparameters tdDueDate
do case
case tdDueDate >= .ydDate
  ...
>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?
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform