JSL: Lancer la boîte de dialogue de la plate-forme pour l'entrée utilisateur, puis modifier le rapportMe cogner la tête contre le mur, il doit y avoir un moyen simple de le faire, mais je suis perdu.
Voici mon scénario souhaité:
1) L'exécution du script devrait faire apparaître la boîte de dialogue de lancement de la plate-forme "Distribution", afin que l'utilisateur puisse faire des sélections
2) En cliquant sur OK, renvoyez une poignée au rapport résultant afin qu'il puisse être traité et modifié.
Je peux obtenir le même résultat, laborieusement, en créant une boîte de dialogue modale personnalisée, en analysant les résultats et en les transmettant à la plateforme de distribution. Mais ce que je veux, c'est permettre à l'utilisateur d'exécuter la boîte de dialogue de lancement de distribution régulière.
Des idées?
Re: JSL: boîte de dialogue de lancement de la plate-forme pour l'entrée utilisateur, puis modification du rapportJordan,
Voici un exemple du script guide à l'aide de l'action ().
Ou est-ce que cela Faites ce que vous voulez ?
Stan
Re: JSL: boîte de dialogue de lancement de la plate-forme pour l'entrée utilisateur, puis modification du rapportSalut Jordan,
Exécutez ceci et faites défiler vers le bas du rapport pour voir si cela fait ce que vous voulez:
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!")))
);
Notez que puisque "doTheRest" est une expression appelée par grabHandle, il ne s'exécutera pas tant que l'utilisateur n'aura pas appuyé sur le bouton OK. Sinon, les 3 ajouts tenteront de s'exécuter immédiatement; cela se traduit par une erreur, car distHandle ne sera pas défini, car le rapport de distribution n'aura pas encore été créé. Par conséquent, vous souhaiterez que tout ce qui dépend de / en aval du rapport de distribution soit enveloppé dans une expression, qui est appelée à l'intérieur de l'expression quelle que soit l'argument de la fonction Action ().
Merci @stan_koprowski , pour avoir mentionné la fonction Action () ... Je ne connaissais pas son existence.
À votre santé,
Brady
Re: JSL: boîte de dialogue de lancement de la plate-forme pour l'entrée utilisateur, puis modification du rapportMerci @brady_brady c'est exactement ce dont j'avais besoin. Impossible de faire fonctionner correctement Action (), l'expression imbriquée fait l'affaire. Sucré!
Les développeurs lisent ce fil, cela ne devrait-il pas être un peu plus facile? Ce serait bien d'avoir une façon plus propre de coder cela.
Jordan
Re: JSL: boîte de dialogue de lancement de la plate-forme pour l'entrée utilisateur, puis modification du rapportJouer avec cela un peu plus, il semble que les expressions imbriquées ne sont même pas nécessaires. Cela fonctionne aussi:
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!" ) )
);
)
);
Je retire mon commentaire précédent pour demander une meilleure façon de coder cela!
Ce qui m'a fait trébucher, c'est que Action () n'est pas comme une boîte de dialogue modale - elle n'arrête pas l'exécution du script. Tout code suivant l'appel de distribution est exécuté immédiatement, avant même que l'utilisateur clique sur "OK". Tout ce qui doit se produire après l'entrée de l'utilisateur doit être encapsulé dans l'argument Action ().
Merci encore @brady_brady et @stan_koprowski pour montrer le chemin.