Lo scopo di questo codice è ottenere l'input dell'utente per generare un report.L'utente selezionerà il mese e il tipo.Il codice funziona parzialmente come mostrato ma non appena provo a convertirlo in una funzione che risiede su un altro file JSL (chiamato con un "include") non riesce. Non riesco a ottenere la restituzione delle due variabili e ricevo sempre un errore "Nome non risolto".So che Month ritorna come un elenco e che il tipo restituisce come una stringa (?). Cosa mi manca e come posso ottenere il mese e il tipo restituiti dalla funzione.
Grazie!
Names Default To Here( 1 );
monthLst = {"may", "June", "July"};
nw = New Window( "Select Month",
<<MODAL>","Accounting", "Financial"},
),
Spacer Box( size( 10, 10 ) ),
H List Box(
Align( left ),
Spacer Box(),
Button Box( "Cancel", bbCancelled = 1 ),
Button Box( "OK",
bbCancelled = 0;
selectMo = tb2 << Get Selected;
rcb = cb << Get Selected;
)
)
),
Spacer Box( size( 50, 10 ) )
),
Spacer Box( size( 25, 30 ) )
);
If( bbCancelled == 1,
Stop(),
If( selectMo == {},
//error modal
::dialogModalNoEdit( "Please select a Month." );
//recursively call modal window function
SelExpModal( monthLst );
,
//if values were selected return results
//Return(selectMo[1] ),
)
);
Print(selectMo);
Print(rcb);</MODAL>Se ho capito bene ..
Se stai creando una funzione dovrai restituire i valori che vuoi usare dopo che la funzione è stata eseguita (a meno che tu non voglia usare variabili globali).
In questo caso potresti restituirli ad esempio in questo modo (l'array associativo forse sarebbe meglio):
return(selectMo, rcb);
E nello script che include quello script puoi accedervi:
Names Default To Here(1);
Include("MonthTypeFunc.jsl");
retVal = MonthTypeWindow();
show(retVal[1],retVal[2]);Script di esempio allegati. Posizionalo nella stessa cartella ed esegui Main.jsl.
Grazie mille jthi!Non ho mai pensato di utilizzare un array associativo.