Spaltendialogfeld – kopiert auch Spalteneigenschaften<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe ein Skript, das mehrere Datentabellen öffnet und neue Spalten in diesen Datentabellen erstellt. Ist es möglich, ein Skript für ein Spaltenkopierfeld zu erstellen, das alle Spalten aus jeder geöffneten Datentabelle anzeigt? damit ich nur die gewünschten Spalten mit ihren Eigenschaften auswählen und kopieren kann?
Mein aktueller Code versucht, die Datentabellen in einer neuen Tabelle zu verketten, bevor die Spalten kopiert werden, aber es sieht so aus Mit JMP konnte ich nicht mehr als zwei Datentabellen gleichzeitig verketten.
Unten finden Sie eine Zusammenfassung des Codes, den ich geschrieben habe, um die Bearbeitung zu erleichtern. Danke.
Namen standardmäßig hier ( 1 ) ;
// „PickFile()“ verwenden, um eine Liste der zu öffnenden Dateien abzurufen (nur Windows)
Dateiliste = Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„$DESKTOP“ , // Ursprünglicher Ordner
{ „JMP-Dateien|jmp;jsl;jrn;csv“ , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Mehrere – Wenn „Save Flag“ = 0, ermöglicht die Verwendung eines Werts von 1 das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, daher müssen wir sie selbst erstellen
Wenn ( ! Ist Liste ( Dateiliste ) ,
Dateiliste = Bewertungsliste ( { Dateiliste } )
) ;
// Öffnen Sie die Dateien und speichern Sie die entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel ( Dateiliste ) , F ++,
dt = Offen ( Dateiliste [ F ] ) ;
Einfügen in ( Tabellennamen , dt << getName ) ;
) ;
dt = Neuer Tisch ( „Verketteter Hund H“ ) ;
//Spaltenkopierer erstellen, um Dateien zu kopieren
dt = Aktuelle Datentabelle () ;
col_dlg = neues Fenster ( „Spaltenkopierer“ ,
Panelbox ( „Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:“ ,
col_clist = collistbox ( alle , Breite ( 200 ) , max ausgewählt ( 4 )) ,
) ,
Buttonbox ( "OK" ,
selected_column_list = col_clist << getselected ;
Spalte 1 = selected_column_list [ 1 ] ;
Spalte2 = selected_column_list [ 2 ] ;
Spalte 3 = selected_column_list [ 3 ] ;
Spalte 4 = selected_column_list [ 4 ] ;
// Eine neue Tabelle erstellen, die nur die beiden ausgewählten Spalten verwendet
dt2 = dt << Teilmenge ( Säulen ( Spalte ( dt , Spalte 1 ) , Spalte ( dt , Spalte2 ) , Spalte ( dt , Spalte 3 ) , Spalte ( dt , Spalte 4 ) ) ) ;
col_dlg << Fenster schließen ;
)
) ;
Datentabelle hinzugefügt.
Die Nachricht wurde bearbeitet von: Luqman Olawin
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenHallo Jim,
Ich habe versucht, es durch „Name“ zu ersetzen. Ich habe die Funktion „Nach übereinstimmender Spalte“ kommentiert und das scheint bei mir zu funktionieren. Vielen Dank für die Hilfe, ich weiß das wirklich zu schätzen!
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenDer Fehler weist darauf hin, dass es keine Spalte mit dem Namen „Wafer-ID in Lot-ID“ gibt.Dies ist die passende Spalte in meinen Datentabellen.Ich glaube, der Spaltenname, mit dem Sie übereinstimmen, heißt „Name“.Ändern Sie die beiden Referenzen von „Wafer-ID in Chargen-ID“ in „Name“.
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenUnten ist der Fehler, den ich im Protokollfenster erhalte. Ich habe den Beitrag bearbeitet, um die Datentabellen anzuhängen, und sie haben alle die gleichen Spalten mit nur unterschiedlichen Tabellennamen.Ich möchte Halten Sie die gleichnamigen Spalten getrennt, damit ich beim Erscheinen des Spaltenkopierers die Spalten auswählen kann, die ich kopieren möchte. Danke.
Für den bereichsbezogenen Datentabellenzugriff ist eine Datentabellenspalte oder -variable beim Zugriff oder bei der Auswertung von „dt:Wafer-ID in Los-ID“, dt:Wafer-ID in Los-ID/*###*/ erforderlich.
Im folgenden Skript ist der Fehler mit /*###*/ markiert.
Namen standardmäßig hier( 1 );
fileList = Datei auswählen(
„Wählen Sie eine oder mehrere Dateien aus“,
„$DESKTOP“,
{"JMP-Dateien|jmp;jsl;jrn;csv", "Alle Dateien|*"},
1,
0,
Leer(),
mehrere
);
If( !Is List( fileList ),
fileList = Eval List( {fileList} )
);
Tabellennamen = {};
For( f = 1, f <= N Items( fileList ), f++,
dttemp = Open( fileList);
Insert Into( tableNames, dttemp << getName );
Wenn( f == 1,
dt = dttemp,
dtx = dt << Join(
Mit( dttemp ),
Durch übereinstimmende Spalten(
dt:Wafer-ID in Chargen-ID/*###*/ = dttemp:Wafer-ID in Chargen-ID
),
Reihenfolge der Haupttabelle beibehalten(),
Name der Ausgabetabelle („Concatenated Watch H“)
);
Close( dttemp, nosave );
Close( dt, nosave );
dt = dtx;
);
);
dt = Aktuelle Datentabelle();
col_dlg = Neues Fenster( „Spaltenkopierer“,
Panel Box( „Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:“,
col_clist = Col List Box( all, width( 200 ), max selected( 4 ) )
),
Schaltflächenfeld( „OK“,
selected_column_list = col_clist << getselected;
col1 = selected_column_list[1];
col2 = selected_column_list[2];
col3 = selected_column_list[3];
col4 = selected_column_list[4];
dt2 = dt << Teilmenge(
Säulen(
Spalte( dt, col1 ),
Spalte( dt, col2 ),
Spalte( dt, col3 ),
Spalte( dt, col4 )
)
);
col_dlg << Fenster schließen;
)
);
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenErzählen Sie mir etwas über die verschiedenen Dateien. Gibt es Spalten mit denselben Namen? Alle Spalten, die denselben Namen haben, werden im Join mithilfe der Anweisung „merge same name columns(1)“ übereinander ausgeblendet.Wenn Sie damit rechnen, dass bei der Verknüpfung die gleichnamigen Spalten getrennt bleiben, muss der Codeabschnitt, der die Verknüpfung durchführt, erkennen, dass die Spalte „Name“ in der verknüpften Datentabelle nicht mehr „Name“, sondern „Name von “ heißt. Dies muss im Skript behandelt werden, damit die Verknüpfung erfolgen kann.
Ist die Spalte „Name“ in Ihren Datentabellen eine eindeutige Kennung für jede Zeile?
Können Sie mir sagen, welche Fehlermeldungen im JMP-Protokoll angezeigt werden (Ansicht==>Protokoll)?
Hier ist der Code, der auf meinem System fehlerfrei funktioniert.Bitte beachten Sie, dass das Verzeichnis, das ich öffne, um die Eingabedateien zu finden, und auch die Spalte, die für den Abgleich bei der Verknüpfung verwendet wird, von Ihrem Code abweichen.Ansonsten sollte es derselbe Code sein.Dieser Code funktioniert fehlerfrei. Bitte beachten Sie, dass davon ausgegangen wird, dass dieser Code funktioniert, mit Ausnahme der Spalte, die für den Abgleich verwendet wird (" Wafer-ID in Chargen-ID").
Namen standardmäßig hier ( 1 ) ;
Dateiliste = Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„c:\users\txjim\documents\multifiles“ , // Ursprünglicher Ordner
{ „JMP-Dateien|jmp;jsl;jrn;csv“ , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Mehrere – ermöglicht das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
Wenn ( ! Ist Liste (Dateiliste) ,
Dateiliste = Bewertungsliste ( {fileList} )
) ;
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel (Dateiliste) , F ++,
dttemp = Offen ( Dateiliste);
Einfügen in ( Tabellennamen , dttemp << getName ) ;
Wenn ( F == 1 ,
dt = dttemp ,
dtx = dt << Verbinden (
With( dttemp ) ,
Durch Matching Columns( dt : Name ( „Wafer-ID in Chargen-ID“ ) = dttemp : Name ( „Wafer-ID in Chargen-ID“ ) ) ,
Reihenfolge der Haupttabelle beibehalten() ,
Spalten mit demselben Namen zusammenführen( 1 ) ,
Name der Ausgabetabelle( „Verkettete Überwachung H“ )
) ;
Schließen ( dttemp , nosave ) ;
Schließen ( dt , nosave ) ;
dt = dtx ;
) ;
) ;
dt = Aktuelle Datentabelle () ;
col_dlg = Neues Fenster ( „Spaltenkopierer“ ,
Panel-Box ( „Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:“ , col_clist = Col-Listenfeld ( alle , Breite( 200 ) , max ausgewählt( 4 ) ) , ) ,
Button-Box ( "OK" ,
selected_column_list = col_clist << getselected;
Spalte 1 = selected_column_list[ 1 ] ;
Spalte2 = selected_column_list[ 2 ] ;
Spalte 3 = selected_column_list[ 3 ] ;
Spalte 4 = selected_column_list[ 4 ] ;
dt2 = dt << Teilmenge ( Säulen( Spalte ( dt , Spalte1) , Spalte ( dt , Spalte2) , Spalte ( dt , Spalte3) , Spalte ( dt , col4 ) ) ) ;
col_dlg << Fenster schließen;
) ;
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenFunktioniert auch nicht. Die Änderung geht nicht einmal in die Tabelle ein.
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenDas Problem besteht darin, dass JMP die Spalten beim Verknüpfen von Tabellen umbenennt, wenn die Tabellen Spalten mit demselben Namen haben.Daher wurde Ihre Spalte mit dem Namen „Name“ nach dem ersten Join geändert.Ändern Sie also die Zeile:
dtx = dt << Verbinden ( Mit ( dttemp ) , Durch passende Spalten ( Name = Name ) , Behalten Sie die Reihenfolge der Haupttabelle bei () , Name der Ausgabetabelle ( „Verkettete Überwachung H“ ) ) ;
Zu
dtx = dt << Verbinden ( Mit ( dttemp ) , Durch passende Spalten ( Name = Name ) , Behalten Sie die Reihenfolge der Haupttabelle bei () , Name der Ausgabetabelle ( „Verkettete Überwachung H“ ), gleichnamige Spalten zusammenführen(1) ) ;
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenDanke Jim. Das Timing hat das Problem nicht gelöst (ich habe auch versucht, es zu erhöhen). Die Schließfunktion funktioniert jedoch gut. Das einzige Problem besteht jetzt darin, dass die dritte Datei von selbst geöffnet wird, ohne mit der zuletzt verbundenen Tabelle verknüpft zu werden. Ich habe seit gestern verschiedene Methoden ausprobiert, aber es funktioniert nicht.
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenDer Code soll die erste Datentabelle öffnen, dann die zweite Tabelle öffnen, eine neue verknüpfte Datentabelle erstellen, die ursprüngliche Tabelle und die gerade geöffnete Tabelle schließen und die neu verknüpfte Tabelle beibehalten.Öffnen Sie dann den dritten Tisch. Verknüpfen Sie es mit der zuvor verknüpften Tabelle und erstellen Sie so eine neue Datentabelle.Schließen Sie dann die alte verbundene Tabelle und die neu geöffnete Tabelle und behalten Sie dabei die zuletzt verbundene Tabelle usw. bei.
Möglicherweise liegt ein Zeitproblem vor und Sie haben eine der Schließfunktionen entfernt.Bitte ändern Sie den folgenden Code:
Wenn ( F == 1 ,
dt = dttemp ,
dtx = dt << Verbinden ( Mit ( dttemp ) , Durch passende Spalten ( Name = Name ) , Behalten Sie die Reihenfolge der Haupttabelle bei () , Name der Ausgabetabelle ( „Verkettete Überwachung H“ ) ) ;
warte(1);
Schließen ( dttemp , nosave ) ;
close (dt,nosave);
dt = dtx ;
) ;
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenHallo Jim,
Danke für die Hilfe, das habe ich nach mehreren Versuchen herausgefunden. Ich hätte auf diesen Thread antworten sollen. Das Folgende war der Code, den ich verwendet habe. Das Problem, das ich jetzt habe, ist, dass ich nicht mehr als 2 Tische zusammenfügen kann. Jedes Mal, wenn ich versuche, drei Tabellen zu verbinden, werden statt einer zwei verschiedene verkettete Tabellen angezeigt. Die erste zeigt die verketteten Datentabellen 1 und 2 und die zweite zeigt die verketteten Datentabellen 1 und 3.
Ohne eine verkettete Datentabelle ist es sehr schwierig, den Spaltenkopierer zu verwenden. Also habe ich stattdessen darüber nachgedacht, ob es möglich ist, den Spaltenkopierer zu verwenden, damit er alle Spalten aus mehreren Datentabellen anzeigt?
Namen standardmäßig hier ( 1 ) ;
// „PickFile()“ verwenden, um eine Liste der zu öffnenden Dateien abzurufen (nur Windows)
Dateiliste = Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„$DESKTOP“ , // Ursprünglicher Ordner
{ „JMP-Dateien|jmp;jsl;jrn;csv“ , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Mehrere – ermöglicht das Öffnen von mehr als einer Datei (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, daher müssen wir sie selbst erstellen
Wenn ( ! Ist Liste ( Dateiliste ) ,
Dateiliste = Bewertungsliste ( { Dateiliste } )
) ;
// Öffnen Sie die Dateien und speichern Sie die entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel ( Dateiliste ) , F ++,
dttemp = Offen ( Dateiliste [ F ] ) ;
Einfügen in ( Tabellennamen , dttemp << getName ) ;
// Die Datentabellen aneinander hängen
Wenn ( F == 1 ,
dt = dttemp ,
dtx = dt << Verbinden ( Mit ( dttemp ) , Nach Zeilennummer , Durch passende Spalten ( Name = Name ) , Behalten Sie die Reihenfolge der Haupttabelle bei () , Name der Ausgabetabelle ( „Verkettete Überwachung H“ ) ) ;
Schließen ( dttemp , nosave ) ;
dt = dtx ;
) ;
) ;
dt = Aktuelle Datentabelle () ;
//Spaltenkopierer erstellen, um Dateien zu kopieren
col_dlg = Neues Fenster ( „Spaltenkopierer“ ,
Panel-Box ( „Wählen Sie vier Spalten aus, um eine neue Tabelle zu erstellen mit:“ ,
col_clist = Col-Listenfeld ( alle , Breite ( 200 ) , max ausgewählt ( 4 ) ) ,
) ,
Button-Box ( "OK" ,
selected_column_list = col_clist << getselected ;
Spalte 1 = selected_column_list [ 1 ] ;
Spalte2 = selected_column_list [ 2 ] ;
Spalte 3 = selected_column_list [ 3 ] ;
Spalte 4 = selected_column_list [ 4 ] ;
// Eine neue Tabelle erstellen, die nur die beiden ausgewählten Spalten verwendet
dt2 = dt << Teilmenge ( Säulen ( Spalte ( dt , Spalte 1 ) , Spalte ( dt , Spalte2 ) , Spalte ( dt , Spalte 3 ) , Spalte ( dt , Spalte 4 ) ) ) ;
col_dlg << Fenster schließen ;
)
) ;
Betreff: Dialogfeld „Spalte“ – kopiert auch SpalteneigenschaftenBeim letzten Stellen dieser Frage haben Sie angegeben, dass Sie die Tabellen nicht miteinander verketten, sondern horizontal verbinden wollten.Unten finden Sie eine Überarbeitung des Skripts, das ich Ihnen zuvor gesendet habe, aber dieses Mal sind die Tabellen horizontal verbunden.
Namen standardmäßig hier ( 1 ) ;
// „PickFile()“ verwenden, um eine Liste der zu öffnenden Dateien abzurufen (nur Windows)
Dateiliste = Wählen Sie Datei (
„Wählen Sie eine oder mehrere Dateien aus“ , // Aufforderung
„$DESKTOP“ , // Ursprünglicher Ordner
{ „JMP
Dateien|jmp;jsl;jrn;csv" , „Alle Dateien|*“ } , // Liste der anzuwendenden Dateifilter (von OS/X ignoriert)
1 , // Anfänglicher anzuwendender Dateifilter (Index des Elements in der Liste oben)
0 , // Flag „Speichern“ – Geben Sie entweder ein „Speichern“- oder ein „Öffnen“-Fenster an. Stellen Sie einen Wert von 1 bzw. 0 ein.
Leer () , // Standarddatei
mehrere // Mehrere – ermöglicht das Öffnen mehrerer Dateien (wird von OS/X ignoriert)
) ;
// Wenn nur eine einzelne Datei ausgewählt ist, ist fileList keine Liste, daher müssen wir sie selbst erstellen
Wenn ( ! Ist Liste (Dateiliste) ,
Dateiliste = Bewertungsliste ( {fileList} )
) ;
// Öffnen Sie die Dateien und speichern Sie die entsprechenden JMP-Tabellennamen
Tabellennamen = {} ;
Für ( F = 1 , F <= N Artikel (Dateiliste) , F ++,
dttemp = Offen ( Dateiliste);
Einfügen in ( Tabellennamen , dtemp << getName ) ;
// Die Datentabellen aneinander hängen
Wenn ( F == 1 ,
dt = dttemp ,
dtx = dt << Verbinden ( Mit( dttemp ) , Nach Zeilennummer) ;
Schließen ( dttemp , nosave ) ;
dt = dtx ;
Schließen ( dtx , nosave ) ;
) ;
) ;
//Spaltenkopierer erstellen, um Dateien zu kopieren
col_dlg = Neues Fenster ( „Spaltenkopierer“ ,
Panel-Box ( „Wählen Sie vier aus
Spalten, um eine neue Tabelle zu erstellen mit:" , col_clist = Col-Listenfeld ( alle , Breite( 200 ) , max ausgewählt( 4 ) ) , ) ,
Button-Box ( "OK" ,
selected_column_list = col_clist << getselected;
Spalte 1 = selected_column_list[ 1 ] ;
Spalte2 = selected_column_list[ 2 ] ;
Spalte 3 = selected_column_list[ 3 ] ;
Spalte 4 = selected_column_list[ 4 ] ;
// Eine neue Tabelle erstellen, die nur die beiden ausgewählten Spalten verwendet
dt2 = dt << Teilmenge ( Säulen( Spalte ( dt , Spalte1) , Spalte ( dt , Spalte2) , Spalte ( dt , Spalte3) , Spalte ( dt , col4 ) ) ) ;
col_dlg << Fenster schließen;
)
) ;