Errore "Nome non risolto" con l'utilizzo della funzione personalizzataCiao,
Sto tentando di definire e utilizzare una funzione personalizzata all'interno di uno script JMP. Andrà bene? A partire da ora, quando arriva alla riga per chiamare la funzione (JSload), ottengo il seguente errore nel registro.
Nome irrisolto: JSload in accesso o valutazione di 'JSload' , JSload( temp ) /*####*/
Sto passando alla funzione una stringa di caratteri "temp" (un nome file con percorso corretto per un file xlsx) e sto tentando di utilizzare il comando Apri per importare il contenuto di quel file in una tabella di dati. Penso però che venga catturato dalla chiamata iniziale alla funzione. Ecco la funzione dello script e della funzione fin d'ora. La variabile "temp" sembra essere stata creata correttamente (controllata nel file di registro).
Il codice per il comando Apri proviene da uno "script di salvataggio" dopo un'importazione iniziale dei dati eseguita manualmente.
Grazie,
Joe
=================================================
For( indice1 = 1,indice1 <= 1, indice1++,
temp = (percorsofile||elencofile[indice1]);
JScarica(temp);
);
JSload = Funzione({temp},
Aprire(
temp,
Fogli di lavoro( "Foglio1" ),
Utilizzare per tutti i fogli( 1 ),
Concatena fogli di lavoro( 0 ),
Crea colonna di concatenazione ( 0 ),
Impostazioni del foglio di lavoro(
1,
Ha intestazioni di colonna ( 1 ),
Numero di righe nelle intestazioni ( 1 ),
Le intestazioni iniziano sulla riga ( 1 ),
I dati iniziano sulla riga ( 2 ),
I dati iniziano sulla colonna ( 1 ),
I dati terminano sulla riga( 0 ),
I dati terminano sulla colonna ( 0 ),
Righe con spanning replicate( 1 ),
Elimina righe nascoste( 1 ),
Elimina colonne nascoste( 1 ),
Elimina colonne vuote( 1 ),
Considera come gerarchia( 0 )
);
);
Re: Nome Errore irrisolto con funzione personalizzata<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Grazie Eric. Questo era il trucco!
Joe
Re: Nome Errore irrisolto con funzione personalizzataEhi, Joe,
In realtà, penso che riutilizzare la variabile "temp" non sia il problema, perché JMP sta dicendo che "JSload" è ciò che non riesce a trovare.Penso che il problema sia che la tua funzione è definita *dopo* che la chiami.In JMP, la tua funzione deve essere definita prima di chiamarla.Sposta la sezione "JSload = function({temp},...)" prima del ciclo for e sospetto che funzionerà.
Inoltre, sembra che manchi una parentesi di chiusura e un punto e virgola alla fine della definizione della funzione.
Questa versione funziona per me:
percorso file = "c:\utenti\pubblico\temp\" ;
elencofile = { "mioTest.xlsx" };
JScarica = Funzione ({temp},
Aprire (
temp,
Fogli di lavoro( "Foglio1" ),
Utilizzare per tutti i fogli ( 1 ),
Concatena fogli di lavoro( 0 ),
Crea colonna di concatenazione( 0 ),
Impostazioni del foglio di lavoro(
1 ,
Ha intestazioni di colonna ( 1 ),
Numero di righe nelle intestazioni( 1 ),
Le intestazioni iniziano sulla riga ( 1 ),
I dati iniziano sulla riga( 2 ),
I dati iniziano sulla colonna( 1 ),
I dati terminano sulla riga( 0 ),
I dati terminano sulla colonna( 0 ),
Righe estese replicate ( 1 ),
Elimina righe nascoste( 1 ),
Elimina colonne nascoste( 1 ),
Elimina colonne vuote( 1 ),
Tratta come gerarchia( 0 )
);
);
);
Per ( indice1 = 1 ,indice1 <= 1 , indice1++,
temp = (percorsofile||elencofile[indice1]);
JScarica(temp);
);
HTH,
Eric
Re: Nome Errore irrisolto con funzione personalizzataCiao Joe,
Il problema è che stai usando il nome della variabile "temp" per il tuo percorso file e per l'argomento nella definizione della tua funzione. Se sostituisci le due istanze di "temp" nella tua istruzione di funzione con un nome di variabile diverso e inutilizzato, lo script dovrebbe funzionare.
-Jerry