So löschen Sie einen Row State Handler korrektIch habe einen sehr einfachen Row State Handler, der sicherstellt, dass die Auswahl einer bestimmten ausgewählten Zeile niemals aufgehoben werden kann.Das Problem besteht darin, dass ich diese Funktionalität deaktivieren und mit dem normalen Betrieb fortfahren möchte.
Hier ist das einfache Skript, das Zeile 15 so sperrt, dass sie immer ausgewählt ist.
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
x=15;
dt << select rows(x);
setrow = function({x},dt<<CLEAR select=""></CLEAR>
Die Frage ist nun: Wie entferne ich den Row State Handler, ohne die Datentabelle zu schließen und erneut zu öffnen?Ich kann den Rowstate-Handler in eine andere Funktion ändern, würde es aber vorziehen, einfach den Row State-Handler zu entfernen.
Hat jemand eine Antwort?
Automatisierung und SkripterstellungDatenzugriffVersuchsplanungMassenanpassungBetreff: So löschen Sie einen Row State Handler korrektIch denke, dass Sie nur der Variablen, die zuvor den Verweis auf den Handler gespeichert hat, einen leeren Wert zuweisen müssen. Sie müssen einen Wait( 0)-Funktionsaufruf verwenden, bevor Sie die Zuweisung des Handlers aufheben, um sicherzustellen, dass alle Aktualisierungen nachgeholt werden und das Skript synchron ist. (Danke an Dan Schikore für den Tipp zu Wait.)
Sehen Sie sich dieses Beispiel an und untersuchen Sie das Protokoll nach der Ausführung. Nur die ersten beiden Zeilenstatusänderungen führen zu einer Ausgabe im Protokoll.
Names Default To Here( 1 );
// example data set
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// example handler
f = Function( {a}, Show( a ) );
// assign handler
rs = dt << make row state handler( f );
// test handler
dt << Select Rows( 1 );
dt << Select Rows( 5 );
Wait( 0 );
// de-assign handler
rs = Empty();
// test absence of handler
dt << Select Rows( 3 );
dt << Select Rows( 9 );Betreff: So löschen Sie einen Row State Handler korrektEine alte Frage, aber warum nicht einfach rs=0 setzen?
Betreff: So löschen Sie einen Row State Handler korrekt<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Das Folgende scheint den Zeilenstatus-Handler zu löschen (aber nicht die aktuellen Zeilenstatus):
Globale löschen ( rs ) ;
Betreff: So löschen Sie einen Row State Handler korrektDanke.
Betreff: So löschen Sie einen Row State Handler korrektIch kopiere/füge JSL-Code in MS-Word ein und kopiere/füge ihn dann von Word hierher ein.Zum Beispiel:
leere_Funktion = Funktion ({ X } , { z } ,
z = 1 ;
) ;
rs = dt << Zeilenstatus-Handler erstellen ( leere_Funktion ) ;
Betreff: So löschen Sie einen Row State Handler korrektWahrscheinlich nicht die richtige Lösung, aber ich weise dem Zeilenstatushandler eine leere Funktion zu:
empty_function = function({x},{z},
z = 1;
);
rs = dt << Make Row State Handler(empty_function);
Irgendwie funktioniert es nicht, wenn die Funktion komplett leer ist, also habe ich z=1 als „Dummy-Code“ hinzugefügt.
Grüße
Peter
PS: Wie können Sie Beispielcode als „Code“ formatieren (wie Sie es getan haben)? Scheint, als wäre ich zu dumm, um die Forensoftware zu verstehen.