Eine Zelle in einem Datensatz abonnierenHallo zusammen,
Ich habe versucht, eine Zelle in einem Datensatz zu abonnieren, aber es hat nie funktioniert. Zum Beispiel möchte ich eine Nachricht erhalten, wenn der Wert einiger bestimmter Zellen geändert wird. Hier ist ein Beispiel:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Example",
TB=Table Box(
Data Table Col Box( :height )
)
);
TB<<SET cell="" changed="" function=""></SET>Sobald ich die Werte in der Spalte "height" ändere, wird der entsprechende Wert in der Datentabellen-Spalte geändert. Das Warnfenster wird jedoch nicht angezeigt, während sich der Wert geändert hat. Grundsätzlich möchte ich Nachrichten aus der Datentabelle erhalten, wie es Subscribe () für eine / mehrere Zellen getan hat. Alle Ideen werden bewertet.
Betreff: Abonnieren Sie eine Zelle in einem DatensatzDiese beiden Lösungen sind großartig und funktionieren für mich. Nochmals vielen Dank für die Hilfe und es hilft mir sehr viel!Betreff: Abonnieren Sie eine Zelle in einem DatensatzIch mag das!
Betreff: Abonnieren Sie eine Zelle in einem DatensatzDie "Set Cell Changed Function" scheint für Data Table Col Box () nicht zu funktionieren, obwohl sie im Skriptindex aufgeführt ist.
Hier finden Sie eine Idee zur Problemumgehung für zwei (verborgene) Spalten in der Datentabelle.
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)));Betreff: Abonnieren Sie eine Zelle in einem DatensatzMir ist ohnehin nicht bewusst, eine Änderung in einem Datenwert in einer Datentabelle direkt auszulösen und dann eine Änderung in einer Tabellenbox () zu bewirken. Nachfolgend finden Sie eine Arbeit, die etwas seltsam ist, aber sie erledigt die Arbeit ......... Ich hoffe auch, dass ein anderes Mitglied der JMP-Community eine direktere Möglichkeit hat, dieses Problem zu lösen
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 );
Betreff: Abonnieren Sie eine Zelle in einem DatensatzHallo Jim,
Danke für deine großartige Idee. Ich habe jedoch versucht, dasselbe zu tun wie das Col-Feld der Datentabelle. Verknüpfen Sie einen Wert aus der Datentabelle, sobald sich der Wert einer bestimmten Zelle geändert hat. Die Daten werden also direkt in der Datentabelle aktualisiert, anstatt von Benutzern eingegeben zu werden. Entschuldigung für die Verwirrung.
Tzu-Chun
Betreff: Abonnieren Sie eine Zelle in einem DatensatzDas Problem scheint zu sein, dass Sie keine bearbeitbare Col Box () für die Tabelle verwenden. Ich habe Ihre Data Table ColBox () in eine Number Col Edit Box () geändert, und die von Ihnen angegebene Funktionalität funktioniert jetzt.
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>