Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Senden“Ich habe die folgende Funktion, die von einer anderen JSL-Datei aufgerufen wird:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);und selbst wenn die Ausgabe des Show-Befehls lautet:
dtImp = DataTable("Details 2");bei der folgenden Zeile erhalte ich die folgende Fehlermeldung:
Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dtImp << /*###*/Select Where( !Contains( parameterChoice, :Parameter ) ) /*###*/
Es kommt mir seltsam vor, dass der Befehl dtImp zwar als DataTable erkannt wird, in der nächsten Zeile aber als „Nicht skriptfähiges Objekt“ gekennzeichnet wird.
Erweiterte statistische ModellierungAutomatisierung und SkriptingGrundlegende Datenanalyse und ModellierungDatenzugriffDatenzusammenführung und -bereinigungDatenexploration und -visualisierungBetreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“Es kann ein Scoping-Problem sein. Ich schlage vor, Ihren Verweis auf die Spalte :Parameter zu ändern in
dtImp::Parameter
Was ist der Wert der Variablen „parameterChoice“?
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“Der Wert des Parameters „Choice“ wird vom Endbenutzer des Add-Ins ausgewählt, das ich zu erstellen versuche.
Das löst das Problem nicht und ich glaube, dass die Wurzel nicht im Befehl „Wo auswählen“ liegt. Selbst wenn ich Folgendes verwende:
dtImp << show window(1);
es gibt den gleichen Fehler. Es scheint, dass die Verwendung des Operators << für die DatatTble nicht zulässig ist.
Aber um analytischer zu sein. Ich habe 2 Skripte:
Main.jsl: Erstellt ein Fenster, das dem Endbenutzer die Möglichkeit gibt, den Datensatz über eine Schaltfläche auszuwählen
bboxImp = button box( "Select data to import", importData())
where the importData() function reads the data:
importData = Function({},
// Function that is used to select which data to import for the analysis
// Prompt the user to select input file
importFile = Pick File( "Select Excel data to import" );
if(importFile == "",
// No file was selected - we skip the rest
New window("Message", modal,
Text Box("No file has been selected for import")
),
// A file was selected - we continue
// Import data
dtImp = Open( importFile,
Worksheets( "Details" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 31 ),
Data Starts on Row( 32 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// Select rows where "Component" column is empty
dtImp << Select Where( Is Missing( :Name( "Component" ) ) );
// Delete the selected rows
dtImp << Delete Rows;
// Grey out import botton and make Reimport and analysis botton available
wait(1);
dtImp << show window(0);
bboxImp << enable(0);
bboxRe << enable(1);
bboxAn << enable(1);
);
);
ImportRedo = Function({},
// Function that is used to remove imported datasets and allow for another import
// Close imported datafile and ungrey import and analysis botton
Close(dtImp, NoSave);
bboxImp << enable(1);
bboxRe << enable(0);
bboxAn << enable(0);
);Wenn Sie dann auf die Schaltfläche „Analyse ausführen“ klicken, wird das Skript Analysis.jsl aufgerufen, das ein Fenster erstellt, in dem der Endbenutzer einige Auswahlmöglichkeiten zum Filtern der Daten durch Auswahl verschiedener eindeutiger Werte hat. Nachdem der Endbenutzer seine Auswahl getroffen hat, versuche ich in diesem Skript Folgendes zu verwenden:
ConfirmFiltering = Function({},
show(dtImp);
dtImp << Select Where(!Contains(parameterChoice, :Parameter));
);um die DataTable dtImp herauszufiltern.
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“Ist „parameterChoice“ ein Skalierungswert wie „xxx“ oder ist es ein JMP-Listenwert {„xxx“}?
In beiden Fällen möchten Sie, wenn es sich um einen einzelnen Wert handelt, möglicherweise die Reihenfolge der Enthält ändern in
</CODE></PRE>
<PRE><CODE class=" language-jsl">!Contains( :Parameter, parameterChoice )
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“Welche JMP-Version verwenden Sie? Verwenden Sie den Anwendungs-Builder? Wie handhaben Sie Bereiche und Namespaces (wir sehen keine vollständigen Skripts, daher müssen wir nur raten)? Treten diese Probleme auf, wenn Sie es aus JSL-Dateien ausführen oder nachdem Sie es in ein Add-In integriert haben? Wenn Sie Ihre JMP-Sitzung schließen und Ihr Skript ausführen, treten beim ersten Ausführen dieselben Probleme auf?
Betreff: Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“Da es schwierig war, den vollständigen Code bereitzustellen, habe ich versucht, einen Teil davon zu beschreiben und bereitzustellen. Ich verstehe jedoch, dass es für jemanden schwierig ist, Hilfe zu leisten, wenn er/sie nicht den vollständigen Code sehen kann.
Ich habe die Lösung gefunden. Das Problem lag im Main.jsl-Skript, das ich oben bereitgestellt habe. In diesem Skript hatte ich die folgende Funktion, die aufgerufen wurde, sobald der Endbenutzer auf die Schaltfläche „Analyse ausführen“ klickte:
compatStudyEval = Function({},
// Function that is used to run the analysis script and handle landing page window
// Run the analysis script related to this add-in
Include( pathAddin || "\Analysis.jsl");
// Close landing page
win << close window;
);The problem is generated by the win << close window; command which I included to close the main window.
Die Lösung wurde mir durch den folgenden Beitrag vorgeschlagen:
Gelöst: Name Ungelöst: Schaltfläche im Zugriff oder bei der Auswertung JMP-Warnmeldung - JMP User Community