Abonner une cellule dans un ensemble de donnéesSalut à tous,
J'essayais de souscrire une cellule dans un ensemble de données, mais cela n'a jamais fonctionné. Par exemple, je souhaite recevoir un message lorsque la valeur de certaines cellules est modifiée. Voici un exemple:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Example",
TB=Table Box(
Data Table Col Box( :height )
)
);
TB<<SET cell="" changed="" function=""></SET>Une fois que je change les valeurs dans la colonne "hauteur", la valeur correspondante dans la boîte col du tableau de données sera chnaged. Cependant, la fenêtre d'avertissement ne s'affichera pas tant que la valeur sera modifiée. En gros, je voudrais recevoir des messages de la table de données comme Subscribe () l’a fait pour une / plusieurs cellules. Toutes les idées seront appréciées.
Re: Abonnez une cellule dans un ensemble de donnéesCes deux solutions sont excellentes et fonctionnent pour moi. Merci encore pour l'aide et ça m'aide beaucoup!Re: Abonnez une cellule dans un ensemble de donnéesJe l'aime!
Re: Abonnez une cellule dans un ensemble de donnéesLa "Définir la fonction modifiée de cellule" ne semble pas fonctionner pour Data Table Col Box (), bien qu'elle soit répertoriée dans l'index de script.
Voici une idée de solution de contournement appliquée à deux colonnes (masquées) du tableau de données.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("orig_height", values(:height << get values), hide(1));
dt << New Column("on_change",
Formula(
If(height != orig_height,
New Window("Warning", Text Box("The cell value has been changed"));
.;
)
),
hide(1)
);
New Window("Example", Table Box(dtcb = Data Table Col Box(:height)));Re: Abonnez une cellule dans un ensemble de donnéesJe ne suis pas au courant de quoi que ce soit pour déclencher directement un changement dans une valeur de données dans une table de données et le faire ensuite affecter une modification dans une table (). Cependant, vous trouverez ci-dessous une solution un peu étrange, mais le travail est fait. J'espère aussi qu'un autre membre de la communauté JMP dispose d'un moyen plus direct de résoudre ce problème.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Setup a matrix of the current values
holdMatrix = dt:Height << Get Values;
// A Graphics Script will be triggered every time a
// graph changes.
// Therefore, it can be used to trigger a change in
// a data table
// Open a graph that will have a data point for every
// entry in the data table.
cc = Control Chart(
Sample Size( 1 ),
KSigma( 3 ),
Chart Col( :height, Run Chart( Show Center Line( 0 ) ) )
);
// The chart is not intended to be displayed, only used as
// a trigger. Therefore it needs to be hidden. If an
// "Invisible" element is added to the chart, the graphics
// trigger does not seem to work, however, if the "show window"
// message is sent, the Graphics Script continues to work
Report( cc ) << show window( 0 );
// Add a script to the Chart, to make the changes in
// the Table Box
Report( cc )[FrameBox( 1 )] << Add Graphics Script(
ncb << delete;
tb << append( ncb = Number Col Box( "string", dt:height << get values ) );
// If any value in the data tables Height column changes,
// this If statement will detect it
If( Min( holdMatrix == dt:height << get values ) == 0,
New Window( "Warning", Text Box( "The cell value has been changed" ), );
holdMatrix = dt:height << get values;
);
);
// Open the display window, with the desired table box
nw = New Window( "Example",
TB = Table Box(
ncb = Number Col Box( "string", dt:height << get values ),
)
);
// When the display window is closed, cleanup the
// environment by closing the trigger chart
nw << on close( Report( cc ) << close window );
Re: Abonnez une cellule dans un ensemble de donnéesSalut Jim,
Merci pour votre bonne idée. Cependant, j'essayais de faire la même chose que la boîte de dialogue table de données: lier une valeur de la table de données une fois que la valeur d'une cellule donnée a été modifiée. Ainsi, les données seront mises à jour directement dans la table de données au lieu de la saisie au clavier des utilisateurs. Désolé pour la confusion.
Tzu-Chun
Re: Abonnez une cellule dans un ensemble de donnéesLe problème semble être que vous n'utilisez pas de Col Box () modifiable pour la table. J'ai remplacé votre champ Col de table de données () par un champ d'édition de nombre Col () et la fonctionnalité que vous avez spécifiée fonctionne maintenant.
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Example",
TB=Table Box(
number Col Edit Box( "string",dt:height<<GET values=""></GET>