I might understand:
The getperiod-Method you create must have 'LParameters' as the 1st line:
LParameters ldDateIn, lnPeriodIdIn
SELECT myTable
SELECT periodid FROM myTable WHERE DateIn = ldDateIn AND PeriodIdIn = lnPeriodIdIn INTO CURSOR myCursor
RETURN (PeriodID) &&--(Which in this case is a numeric value)
***************************************************
You might Issue the command from another method within the same form:
(i.e., if "set strictdate off" was issued)
lPERIOD = thisform.getperiod({12/12/2006}, 40)
or you might issue the command from a myGetPeriodRoutine in a myProgram.prg
lPERIOD = _screen.activeform.getperiod({12/12/2006}, 40)
Hope this helps
>> I want to use PARAMETERS in a VFP method. How can I achieve this.
There are three ways:
First there is the implicit declaration - which is what you are using in your example.
FUNCTION Name( parameter_name1, parameter_name2 )
Parameters created this way are scoped as LOCAL and so are usable only in the method, procedure or function that defines them.
Second is the Explicit Declaration, using the LPARAMETERS keyword, like this:
FUNCTION Name
LPARAMETERS parameter_name1, parameter_name2
Parameters created this way are also scoped as LOCAL and so are usable only in the method, procedure or function that defines them.
Third is the Explicit Declaration, using the PARAMETERS keyword, like this:
FUNCTION Name
PARAMETERS parameter_name1, parameter_name2
Parameters created this way are also scoped as PRIVATE and so are usable in the method, procedure or function that defines them and in any subordinate (i.e. called from) method, procedure or function
Unless you have a particular reason, making parameters PRIVATE is generally a bad idea as it can lead to name conflicts. As to which of the methods of declaring local parameters you use it is entirely up to you - they are functionally identical.
For what it's worth, I prefer the implicit declaration because the method signature matches the calling signature...but it makes no difference.
You are saying "in a method called MyMethod" and then defining a function named "getPeriod". So what are you really asking Is there a method called MyMethod If there is who is the owner of that method (a form method, custom object method etc). IOW where do you really write your code If you mean your form has a method called 'MyMethod' then there wouldn't be any "function" there (you can't create functions within methods - and in practice method, event, function, procedure are same things unless you're a purist on terminology).
Considering you really meant that your form has a method called 'MyMethod':
*form.MyMethod
lparameters ldDateIn, lnPeriodIDIn
local array aResult[1]
select periodID from myTable ;
where DateIn = m.ldDateIn and PeriodIDIn = m.ldPeriodIDIn ;
into array aResult
return iif( _Tally = 0, 0, aResult )
You might want to return .null. in case there is no match. If it is an external function then the only thing that changes is the "function functionName" line at top.