Löschen einer Spalten-/Tabellenvariablen, auf die in der Formel mit JSL verwiesen wirdHi,
Wie im Thema dieses Beitrags erwähnt, habe ich festgestellt, dass die JSL-Befehle „Spalte löschen“ oder „Tabellenvariable löschen“ nicht funktionieren, wenn eine der Spalten eine Funktion hat oder die Tabellenvariable Teil einer Funktion ist.
Wenn Sie diese Aktion "von Hand" ausführen, gibt es ein zusätzliches Warnfenster, das den Benutzer über die Folgen einer solchen Aktion informiert und es ermöglicht, eine Aktion auszuwählen.
Ich verstehe, dass dieses Verhalten absichtlich eingeführt wurde, und ich bin damit völlig einverstanden.
Ich möchte fragen, ob es eine Option/Argument/Flag/Befehl gibt, um dieses Fenster zu umgehen, wenn Spalten-/Tabellenvariablen mit JSL gelöscht werden?
Danke für die Hilfe.
DatentabelleSkripterstellungBetreff: Spalten-/Tabellenvariable löschen, auf die in der Formel mit JSL verwiesen wirdIch bin nicht in der Lage, das zu reproduzieren, was ich als das Problem verstehe, nach dem Sie fragen. Die folgenden Skripte löschen eine Tabellenvariable und eine Spalte aus einer Formel sowie eine Funktion innerhalb jeder Formel.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << New Table Variable( "Days", 42 );
Wait( 5 );
dt << New Column( "test",
formula(
delTVar = Function( {theVar},
dt << Delete Table Variable( theVar )
);
rc = delTVar( "Days" );
:weight;
)
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
Wait( 5 );
dt << New Column( "test",
formula(
delCol = Function( {theCol},
dt << delete columns( theCol )
);
rc = delCol( "height" );
:weight;
)
);Betreff: Löschen einer in der Formel referenzierten Spalte/Tabellenvariable mithilfe von JSLIch glaube, es gibt kein Flag, das dies kann. Vielleicht ein Platz für Wunschlistenelemente. Ich denke, das Flag sollte ähnlich konfigurierbar sein wie die interaktive Version, die zum Entfernen von Referenzen, Formeln oder Abbrechen auffordert (ich würde vielleicht auch Throw hinzufügen).
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("f", Numeric, Continuous, Formula(:height*weight));
dt << Delete Columns({"height", "weight"});
Wird ins Protokoll gedruckt:
Die ausgewählten Spalten können nicht gelöscht werden, da auf einige von den Formeln der verbleibenden Spalten verwiesen wird.
Beim Entfernen einer Formel bleiben die Daten unverändert. Beim Entfernen von Referenzen wird jede Referenz durch einen leeren Wert ersetzt. Diese Auswirkungen sind dauerhaft und können nicht rückgängig gemacht werden.
Skriptfähig[]
Sie könnten diese Nachricht mit Log Capture() erfassen und dann einige JSL-Tricks anwenden, um Referenzen/Formeln vorher zu entfernen.