I'm having an issue with the labs for this tutorial starting with lab 4-2.
Make a details button.
Supposed to use 2 procedures wOrderSelect.w calls gOrderMaint.w.
Lab answers and solution provided still give me error 3234 mismatched parameters passed to gOrderMaint.w.
Supposed to pass persistent process handle and rowid in that order, called procedure receives in the same order. Not sure where I'm going wrong.
Lab 5 builds on these procedures and makes a new and modify button, adds a char parameter to be passed from wOrderSelect.w to gOrderMaint.w. Solutions/answers provided with labs still throwing same 3234 error as in lab 4.
Possible fix here, did not work. I searched forum and kb before posting, sorry if the fix is already somewhere.
Not sure what 'this tutorial' refers to, can you provide a link to it? Or is this the web based training?
It may be easier to just provide the (relevant) code that you are using (both caller and callee).
This tutorial, the web based training through progress PEC.
Gotta be signed in to the Progress Education Community for it to bring you to the right place.
OK.
Caller procedure is wOrderSelect.w
DEFINE VARIABLE ghProcLib AS HANDLE NO-UNDO.
ghProcLib is run as persistent in Internal Procedure InitializeObjects:
RUN PersistentProc.p PERSISTENT SET ghProcLib.
Selection of the btnDetails in the caller procedure is
DO:
RUN gOrderMaint.w(INPUT ghProcLib, INPUT ttOrder.RowIdent).
END.
Callee is gOrderMaint.w
Takes params in as
DEFINE INPUT PARAMETER phProcLib AS HANDLE NO-UNDO.
DEFINE INPUT PARAMETER prowOrderRow AS ROWID NO-UNDO.
but when I run and click details button I get 3234 error mismatched number of parameters passed to gOrderMaint.w.
Later labs add more parameters to caller and callee but its pretty much the same thing, I add a string to caller, catch it in callee character variable but its still not seeing one or all of the parameters passed to it.
Solution code in lab folder and answers provided by the course also throw the 3234 error for this and the other labs that relate to it (adding new, modify save and refresh buttons).
I hope that's more helpful.
I have no access to wbt, so am going on your code snippets here.
Your caller should not compile - it is missing a closing parenthesis, ie it should be:
RUN gOrderMaint.w ( INPUT ghProcLib, INPUT ttOrder.RowIdent ).
If that was just a typo, what is the datatype of ttOrder.Row|dent? I would expect this to be a ROWID, you can find it wherever the temp-table ttOrder is defined, something like:
DEFINE TEMP-TABLE ttOrder
FIELD RowIdent AS ROWID
Missing parens in the previous message was a typo here, code has the parens.
DEFINE TEMP-TABLE ttOrder NO-UNDO LIKE Order
FIELD RowIdent AS ROWID
INDEX RowIdent RowIdent.
Is the definition of ttOrder.
RowIdent is already defined as a ROWID. Passing as ttOrder.RowIdent.RowIdent would be passing the index not the ROWID right?
Could it be my PROPath set wrong, trying to compile another version of the callee?
Mismatched number of parameters passed to routine <name>. (3234)
You are passing parameters to a routine, but the number of parameters you passed does not match the number of parameters expected by the routine.
Is there an additional input / output parameter (possibly hidden in an include) in the callee?
If the above is not true, then yes, it could be a propath or a stale r-code (r-code that has been compiled based on older version of source and not updated) problem - can you delete all r-code from your project just to be sure?
Could you attach the complete sources?
It was a stale r-code issue, the labs say to save to the same directory with the same name as the example code given.
I deleted all but the current versions and the procedures worked. Caller must have been calling a callee without the input variables declared to catch the parameters passed to it.
Thanks for the help!!!!