Lo scopo di questo codice è ottenere l'input dell'utente per generare un report. L'Utente selezionerà il Mese e la tipologia. Il codice funziona parzialmente come mostrato ma non appena provo a convertirlo in una funzione che risiede su un altro file JSL (chiamato con "include") fallisce. 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 ritorna come una stringa (?). Cosa mi manca e come posso ottenere il mese e il tipo restituito dalla funzione.
Grazie!
Names Default To Here( 1 );
monthLst = {"may", "June", "July"};
nw = New Window( "Select Month",
<<MODAL> ","Contabilità", "Finanziario"}, ), Casella spaziatore( dimensioni( 10, 10 ) ), Casella elenco H( Allinea( sinistra ), Casella spaziatore(), Casella pulsante( "Annulla", bbCancelled = 1 ), Casella pulsante( "OK", bbCancelled = 0; selectMo = tb2 << Ottieni selezionato; rcb = cb << Ottieni selezionato; ) ) ), Casella spaziatore( size( 50, 10 ) ) ), Casella spaziatore( size( 25, 30 ) ) ); If( bbCancelled == 1, Stop(), If( selectMo == {}, //errore modale ::dialogModalNoEdit( "Seleziona un mese." ); //chiama ricorsivamente la funzione della finestra modale SelExpModal( meseLst ); , //se i valori sono stati selezionati restituiscono i risultati //Return(selectMo[1] ), ) ); Print(selectMo); Print(rcb);</MODAL>Grazie mille Jthi!Non ho mai pensato di utilizzare un array associativo.
Se ho capito bene..
Se stai creando una funzione dovrai restituire i valori che desideri utilizzare dopo che la funzione è stata eseguita (a meno che tu non voglia utilizzare variabili globali).
In questo caso potresti restituirli ad esempio in questo modo (l'array associativo sarebbe forse migliore):
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.