Wählen Sie die aktuelle Datentabelle ausHallo,
Ich verwende ein kleines jmp_addin, um Informationen zu Spezifikationsgrenzen zu ausgewählten Spalten hinzuzufügen.Wie auch immer, das Problem, auf das ich stoße, ist, dass es bei jeder Ausführung immer die zuletzt geöffnete Datentabelle abruft, selbst wenn ich das Add-In in einem anderen Fenster ausführe. Gibt es eine Möglichkeit, es im jmp_addin hervorzuheben, das ich habe? Versuche ich, ein Skript aus der ausgewählten Datentabelle auszuführen?Ich dachte, currentdatatable würde dies tun, aber es scheint, dass es immer mit der zuletzt geöffneten Datentabelle funktioniert, und manchmal muss ich Spezifikationen zu einer bereits geöffneten Tabelle ändern/hinzufügen ...
Dank im Voraus!
dt = currentdatatable();
table=list("Spec1", "Spec2", "Spec3" );
r = Column Dialog(
Spec = Col List( "Columns to add Spec" ),
v list ("Select Product Spec Table", rb = Combo Box( table()))
);
dtedc = open("C:\myData\ADDIN\Spec Limit\"||table[r["rb"]]||".jmp",invisible);
for ( i=1, i<=N Items(r["Spec"]),i++,
for (j=1, j<= nrows(dtedc), j++,
if(as Name(r["Spec"]) == as Name(dtedc:Parameter),
Eval(
Substitute(
Expr(
Column(dt, r["Spec"]) << set property("spec limits",
{LSL( l), Target( t ), USL( u ), Show Limits(1)}
)
),
Expr( l ), dtedc:LSL,
Expr( t ), dtedc:Target,
Expr( u ), dtedc:USL
)
);
);
);
);
close(dtedc, nosave);
Betreff: Aktuelle Datentabelle auswählenWenn Sie die Funktionsdefinition „select_data_table“ oben in Ihren Code einfügen, funktioniert es.
Betreff: Aktuelle Datentabelle auswählenJa, das funktioniert. Ich hatte nur auf eine Methode gehofft, die Benutzer dazu auffordert, eine Tabelle auszuwählen, da wir oft viele gleichzeitig geöffnet haben. Und sich darauf zu verlassen, dass die verschiedenen Benutzer ihre aktuellen Datentabellen kennen, hat in der Vergangenheit nicht gut funktioniert. Ich hatte nur gehofft, eine Methode zu haben, mit der Benutzer zur Angabe aufgefordert werden können. Aber das muss reichen.
Betreff: Aktuelle Datentabelle auswählenAls ich die Zeile sah
dt = choose_data_table();
Ich ging davon aus, dass Sie irgendwo früher in Ihrem Code eine Funktion hatten, mit der Sie die Datentabelle auswählen konnten, auf der ausgeführt werden soll.Wenn Sie dies jedoch nicht tun, empfehle ich Ihnen, die Zeile wie folgt zu ändern:
dt = current data table();
und versuchen Sie, Ihren Code auszuführen
Betreff: Aktuelle Datentabelle auswählen@txnelson
Danke für die Nachfrage. Ich hatte nicht daran gedacht, das Protokoll zu überprüfen. Es sagt:
Name nicht aufgelöst: Choose_data_table beim Zugriff oder bei der Auswertung von 'choose_data_table', Choose_data_table() /*###*/
Im folgenden Skript ist der Fehler mit /*###*/ markiert.
dt = Choose_data_table() /*###*/;
Show( dt );
dt << Select Where( :Pad Summary == "Overload" );
dt << Colors( 22 );
dt << Markers( 11 );
dt << Select Where( :Pad Summary == "Curve Error" );
dt << Colors( 27 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Detected" );
dt << Colors( 4 );
dt << Markers( 12 );
dt << Select Where( :Pad Summary == "Position Misalign" );
dt << Colors( 3 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negativ (w/ Misalign)" );
dt << Colors( 1 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negative" );
dt << Colors( 1 );
dt << Markers( 0 );
dt << Select Where( :Pad Summary == "Disconnect" );
dt << Colors( 0 );
dt << Markers( 9 );
dt << Select Where( :Pad Summary == "High CP Current" );
dt << Colors( 56 );
dt << Markers( 24 );
dt << Select Where( :Run Status == "Invalid" );
dt << Markers( 4 );Betreff: Aktuelle Datentabelle auswählenWelche Fehler werden im Protokoll angezeigt?
Betreff: Aktuelle Datentabelle auswählenJa, ich werde es versuchen. Tut mir leid, dass ich ziemlich neu bin und noch keine formale Ausbildung in Skripten habe, was wahrscheinlich offensichtlich ist. Ich habe den Datentabellenselektor in dieses Skript eingefügt, anstatt Folgendes zu verwenden:
dt = Aktuelle Datentabelle();
und sicherstellen, dass die aktuelle Datentabelle die Tabelle ist, die ich neu formatieren wollte. Als ich die Funktion „Datentabelle auswählen“ zum ersten Mal implementierte, funktionierte sie wie ein Zauber und erstellte eine Eingabeaufforderung, aus der ich die gewünschte Tabelle auswählen konnte. Ich habe es auch einem Kollegen zur Verwendung geschickt, und es hat bei ihm nicht funktioniert, obwohl ich überprüft habe, dass das Skript unverändert war. Ich habe das gespeicherte Skript geöffnet und es hat bei mir auch nicht funktioniert. Also wechselte ich zwischen den vorherigen Formatierungsmethoden und kehrte zur Methode „Datentabelle auswählen“ zurück, und es funktionierte wieder. Später war das nicht mehr der Fall.
Ich habe keine wirklich gute technische Erklärung für die Inkonsistenz oder dafür, was sich zwischen erfolgreichen und erfolglosen Versuchen geändert hat. Soweit ich das beurteilen kann, wurde nichts konkretes getan. Ich hacke diese Dinge zusammen, daher fehlen mir definitiv einige grundlegende Prinzipien, wie zum Beispiel das Löschen oder Benennen von Präferenzen oder Symbolen. Vielleicht liegt das Problem außerhalb des Rahmens eines kurzen Forumsbeitrags?
Danke jedenfalls
Betreff: Aktuelle Datentabelle auswählenIch denke, wir werden mehr Informationen darüber brauchen, was „inkonsistentes Arbeiten“ bedeutet. Können Sie nähere Angaben machen?
Betreff: Aktuelle Datentabelle auswählenHallo @Jeff_Perkinson ,
Ich versuche, dies in einem ziemlich einfachen Modul zu verwenden, das Datenmarkierungen formatiert. Es hat großartig funktioniert, als ich das Skript zum ersten Mal erstellt habe, aber seitdem funktioniert es nicht mehr konstant. Gibt es irgendwelche Ideen, warum das so sein sollte? Die Spaltentitel und -werte sind zuverlässig.
dt=choose_data_table();
show(dt);
dt << Select Where( :Pad Summary == "Overload" );
dt << Colors( 22 );
dt << Markers( 11 );
dt << Select Where( :Pad Summary == "Curve Error" );
dt << Colors( 27 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Detected" );
dt << Colors( 4 );
dt << Markers( 12 );
dt << Select Where( :Pad Summary == "Position Misalign" );
dt << Colors( 3 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negative (w/ Misalign)" );
dt << Colors( 1 );
dt << Markers( 2 );
dt << Select Where( :Pad Summary == "Negative" );
dt << Colors( 1 );
dt << Markers( 0 );
dt << Select Where( :Pad Summary == "Disconnect" );
dt << Colors( 0 );
dt << Markers( 9 );
dt << Select Where( :Pad Summary == "High CP Current" );
dt << Colors( 56 );
dt << Markers( 24 );
Danke
Betreff: Aktuelle Datentabelle auswählenIch bin gerade auf diese alte Frage gestoßen, die leider nie beantwortet wurde.
Aktuelle Datentabelle() sollte einen Verweis auf das aktive Datentabellenfenster zurückgeben. Ich bin mir nicht sicher, warum das in Ihrem Fall nicht der Fall ist.
Eine zuverlässigere Methode besteht jedoch darin, den Benutzer aufzufordern, aus den offenen Datentabellen auszuwählen.
Hier ist eine kleine Funktion, die eine Liste mit Datentabellen anzeigt und die vom Benutzer getroffene Auswahl zurückgibt.
choose_data_table=function({},
list = {};
For( i = 1, i <= N Table(), i++,
list[i] = Data Table( i ) << get name
);
win = New Window( "Select a data table", << Modal,
hb = H List Box(
Panel Box( "Choose a data table",
dt = List Box(
list,
max selected( 1 ),
chosen = Data Table( (dt << get selected)[1] );
show (chosen);
)
),
)
);
chosen);
Benutzen Sie es so:
dt=choose_data_table();
show(dt);