JSL: avvia la finestra di dialogo della piattaforma per l'input dell'utente, quindi modifica il rapportoSbattere la testa contro il muro, ci deve essere un modo semplice per farlo, ma sono perplesso.
Ecco il mio scenario desiderato:
1) L'esecuzione dello script dovrebbe far apparire la finestra di dialogo di avvio della piattaforma "Distribution", in modo che l'utente possa effettuare selezioni
2) Facendo clic su OK, restituisci un handle al rapporto risultante in modo che possa essere indirizzato e modificato.
Posso ottenere lo stesso risultato, faticosamente, creando una finestra di dialogo modale personalizzata, analizzando i risultati e passandoli alla piattaforma di distribuzione. Ma quello che voglio è consentire all'utente di eseguire la normale finestra di dialogo di avvio della distribuzione.
Qualche idea?
Ri: JSL: avvia la finestra di dialogo della piattaforma per l'input dell'utente, quindi modifica il rapportoGiordania,
Ecco un esempio tratto dallo scripting guida usando action ().
O sarà questo Fai quello che vuoi ?
Stan
Ri: JSL: avvia la finestra di dialogo della piattaforma per l'input dell'utente, quindi modifica il rapportoCiao Giordania,
Esegui questo e scorri fino alla fine del rapporto per vedere se questo fa quello che vuoi:
Names Default To Here(1);
dt = astable(J(20,1,Random Uniform()));
grabHandle = expr(
distHandle = current report();
doTheRest
);
dt << distribution(action(grabHandle));
doTheRest = expr(
for(i=1, i<=3, i++, distHandle[outlinebox(1)] << append(textbox("Yay!")))
);
Si noti che poiché "doTheRest" è un'espressione chiamata da grabHandle, non verrà eseguito fino a quando l'utente non preme il pulsante OK. Altrimenti, i 3 allegati proveranno a essere eseguiti immediatamente; ciò provoca un errore, perché distHandle non sarà definito, poiché il rapporto sulla distribuzione non sarà ancora stato creato. Quindi, vorrai avere tutto ciò che dipende / a valle del rapporto di distribuzione racchiuso in un'espressione, che viene chiamata all'interno di qualunque espressione sia l'argomento della funzione Action ().
Grazie @stan_koprowski , per menzionare la funzione Action () ... Non sapevo della sua esistenza.
Saluti,
Brady
Ri: JSL: avvia la finestra di dialogo della piattaforma per l'input dell'utente, quindi modifica il rapportoGrazie @brady_brady questo è esattamente quello di cui avevo bisogno. Impossibile eseguire correttamente Action (), l'espressione nidificata fa il trucco. Dolce!
Qualche sviluppatore che legge questo thread, non dovrebbe essere un po 'più semplice? Sarebbe bello avere un modo più pulito per codificare questo.
Giordania
Ri: JSL: avvia la finestra di dialogo della piattaforma per l'input dell'utente, quindi modifica il rapportoGiocando ancora un po 'con questo, sembra che le espressioni nidificate non siano nemmeno necessarie. Funziona anche questo:
Names Default To Here( 1 );
dt = As Table( J( 20, 1, Random Uniform() ) );
dt << distribution(
action(
distHandle = Current Report();
For( i = 1, i <= 3, i++,
distHandle[Outline Box( 1 )] << append( Text Box( "Yay!" ) )
);
)
);
Ritiro il mio commento precedente chiedendo un modo migliore per codificare questo!
Ciò che mi ha fatto inciampare è che Action () non è come una finestra di dialogo modale - non interrompe l'esecuzione dello script. Qualsiasi codice che segue la chiamata di distribuzione viene eseguito immediatamente, anche prima che l'utente faccia clic su "OK". Tutto ciò che deve accadere dopo l'input dell'utente deve essere racchiuso nell'argomento Action ().
Grazie ancora @brady_brady e @stan_koprowski per mostrare la strada.