Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Method Call from within a select statement returns
Message
De
23/06/2006 10:38:20
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
01131155
Message ID:
01131159
Vues:
12
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?
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform