Fehler „Name nicht aufgelöst“ bei Verwendung einer benutzerdefinierten FunktionHallo,
Ich versuche, eine benutzerdefinierte Funktion innerhalb eines JMP-Skripts zu definieren und zu verwenden. Läuft das gut? Wenn es jetzt zur Zeile zum Aufrufen der Funktion (JSload) kommt, erhalte ich die folgende Fehlermeldung im Protokoll.
Name ungelöst: JSload im Zugriff oder Auswertung von 'JSload', JSload( temp) /*###*/
Ich übergebe der Funktion eine Zeichenfolge „temp“ (einen Dateinamen mit dem richtigen Pfad für eine XLSX-Datei) und versuche, den Inhalt dieser Datei mit dem Befehl „Öffnen“ in eine Datentabelle zu importieren. Ich denke jedoch, dass es beim ersten Aufruf der Funktion hängen bleibt. Hier ist die aktuelle Skript- und Funktionsfunktion. Die Variable „temp“ scheint korrekt erstellt zu sein (in der Protokolldatei überprüft).
Der Code für den Befehl „Öffnen“ stammt aus einem „Speicherskript“, nachdem ein erster Datenimport manuell durchgeführt wurde.
Danke,
Joe
=============================================
For( index1 = 1,index1 <= 1, index1++,
temp = (filepath||filelist[index1]);
JSload(temp);
);
JSload = Function({temp},
Offen(
Temperatur,
Arbeitsblätter( "Sheet1" ),
Für alle Blätter verwenden( 1 ),
Arbeitsblätter verketten( 0 ),
Verkettungsspalte erstellen (0),
Arbeitsblatteinstellungen(
1,
Hat Spaltenüberschriften (1),
Anzahl der Zeilen in Kopfzeilen (1),
Überschriften beginnen in Zeile (1),
Daten beginnen in Zeile (2),
Daten beginnen in Spalte (1),
Daten enden in Zeile (0),
Daten enden in Spalte (0),
Replizierte übergreifende Zeilen (1),
Versteckte Zeilen unterdrücken (1),
Versteckte Spalten unterdrücken (1),
Leere Spalten unterdrücken (1),
Als Hierarchie behandeln( 0 )
);
);
Betreff: Name Ungelöster Fehler mit benutzerdefinierter Funktion<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Danke Eric. Das war der Trick!
Joe
Betreff: Name Ungelöster Fehler mit benutzerdefinierter FunktionHallo Joe,
Tatsächlich denke ich, dass die Wiederverwendung der Variablen „temp“ nicht das Problem ist, da JMP sagt, dass „JSload“ das ist, was es nicht finden kann.Ich denke, das Problem besteht darin, dass Ihre Funktion definiert wird, nachdem Sie sie aufgerufen haben.In JMP muss Ihre Funktion definiert werden, bevor Sie sie aufrufen.Verschieben Sie den Abschnitt „JSload = function({temp},...)“ vor die for-Schleife und ich vermute, dass es funktionieren wird.
Außerdem scheinen Ihnen am Ende der Funktionsdefinition ein schließendes Paren und ein Semikolon zu fehlen.
Diese Version funktioniert für mich:
Dateipfad = „c:\users\public\temp\“ ;
fileList = { „meinTest.xlsx“ };
JSload = Funktion ({temp},
Offen (
Temperatur,
Arbeitsblätter( "Blatt1" ),
Für alle Blätter verwenden( 1 ),
Arbeitsblätter verketten( 0 ),
Verkettungsspalte erstellen( 0 ),
Arbeitsblatteinstellungen(
1 ,
Hat Spaltenüberschriften( 1 ),
Anzahl der Zeilen in Kopfzeilen( 1 ),
Kopfzeilen beginnen in Zeile( 1 ),
Daten beginnen in Zeile( 2 ),
Daten beginnen in Spalte( 1 ),
Daten enden in Zeile( 0 ),
Daten enden in Spalte( 0 ),
Replizierte übergreifende Zeilen( 1 ),
Versteckte Zeilen unterdrücken( 1 ),
Ausgeblendete Spalten unterdrücken( 1 ),
Leere Spalten unterdrücken( 1 ),
Als Hierarchie behandeln( 0 )
);
);
);
Für ( index1 = 1 ,index1 <= 1 , index1++,
temp = (filepath||filelist[index1]);
JSload(temp);
);
HTH,
Eric
Betreff: Name Ungelöster Fehler mit benutzerdefinierter FunktionHallo Joe,
Das Problem besteht darin, dass Sie den Variablennamen „temp“ für Ihren Dateipfad und für das Argument in Ihrer Funktionsdefinition verwenden. Wenn Sie die beiden Instanzen von „temp“ in Ihrer Funktionsanweisung durch einen anderen, nicht verwendeten Variablennamen ersetzen, sollte Ihr Skript funktionieren.
-Jerry