Guardar nombres de variables incrementadas en el bucle For en una listaestoy tratando de
1) Abra una serie de archivos que se enumeran en la lista Unique_Files
2) Si el archivo no existe, se abre un cuadro de diálogo con un mensaje que indica que el archivo existe.
3) Si el archivo existe, ábralo en JMP.
4) Si el archivo existe, agregue el nombre de referencia de la tabla de datos a la lista UniqueTables
Todas las demás partes de mi secuencia de comandos parecen estar funcionando, excepto poder crear una lista del nombre de referencia de la tabla de datos.La forma en que está escrito mi script a continuación da como resultado la lista
TablasÚnicas = {Tabla de datos("nombre de archivo1"), Tabla de datos("nombre de archivo2"),....}
En lugar de eso, quiero que el script dé como resultado la lista como
TablasÚnicas = Mi_Tabla_1, Mi_Tabla_2, Mi_Tabla_3,...
Gracias de antemano.
N Items (Unique_Files);
UniqueTables = { };
For ( i = 1, i <= N, i ++,
If(
File Exists( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv"),
Eval(
Substitute(
Expr(
MyTab = Open( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv");
Insert Into( UniqueTables, MyTab)
),
Expr( MyTab),
Parse( My_Table_" ||Char(i))
)
),
New Window ("File Not Found",
<< Modal,
V List Box(
Text Box( Unique_Files[i]|| " does not exist in folder."),
Button Box( "OK")
)
)
)
);Re: Guardar nombres de variables incrementales en el bucle For en una listasí
Re: Guardar nombres de variables incrementales en el bucle For en una lista¡Ese período fue difícil de ver!
Re: Guardar nombres de variables incrementales en el bucle For en una listaDe alguna manera un punto "." terminó después
Show( UniqueTables );.
así que elimínelo y funcionará bien... Corregiré el ejemplo anterior para referencias futuras.
Re: Guardar nombres de variables incrementales en el bucle For en una listaEn la última línea me sale el siguiente error:
"Tablas únicas" inesperadas. Quizás falte un ";" o ",".
Línea 42 Columna 1: ►UniqueTables[1] << Concatenar( UniqueTables[2] );
El texto restante que fue ignorado fue
TablasÚnicas[1]<Re: Guardar nombres de variables incrementales en el bucle For en una lista
Parece tener cierta falta de conocimiento sobre lo que realmente le brindan las diversas estructuras.Le recomiendo encarecidamente que se tome el tiempo de leer la Guía de secuencias de comandos.Pero también creo que lo siguiente podría aclarar algunos problemas con su código actual.Eche un vistazo a mi código anotado a continuación y vea si aclara algo los problemas que tiene.
names default to here(1);
dt1=open("$SAMPLE_DATA/big class.jmp");
dt2=open("$SAMPLE_DATA/big class families.jmp");
// Here is what the value of dt1 is
show(dt1);
// From the log
// dt1 = DataTable("big class");
// Therefore the value of dt2 is,
show(dt2);
// dt2 = DataTable("big class families");
// The structure of the Concatenate Platform syntax is:
// data table("data table name") << Concatenate( data table("data table2 name"), data table("data table2 name") );
// That would mean that the following will concatenate our two files
data table( "big class" ) << Concatenate( data table( "big class families" ) );
// It also means, that since we have variables dt1, which was shown to equal Data Table( "big class" ), and
// dt2 which has the value of Data Table( "big class families" )
// the above concatenate statement can be written
dt1 << Concatenate( dt2 );
// Here is another way to do this
UniqueTables = {};
MyTab = open("$SAMPLE_DATA/big class.jmp");
insert into( UniqueTables, MyTab );
MyTab = open("$SAMPLE_DATA/big class families.jmp");
insert into( UniqueTables, MyTab );
Show( UniqueTables );
// returns
// UniqueTables = {DataTable("big class"), DataTable("big class families")};
// So now the Concatenate statement can be written
UniqueTables[1] << Concatenate( UniqueTables[2] );Re: Guardar nombres de variables incrementales en el bucle For en una listaMira qué problema xy es decir, definitivamente nos ayudará a ayudarlo.
Pero aparte de eso.Si todo lo que intenta hacer es unir todos los archivos JMP en una carpeta.
Names default to here( 1 );
// this is just creating an example set don't worry about it.
dt = open("$SAMPLE_DATA\Big Class.jmp");
dir = convert file path("$DESKTOP\Example\");
Create Directory(dir);
for(i=1, i<=6, i++,
path = convert file path(char(i)||".jmp", base(dir));
dt << Save As(path);
);
// this is actually what you'll want to run
dir = convert file path("$DESKTOP\Example\");
// find the files in that directory
files = files in directory(dir);
// create a base table
dt_final = New Table("Concatted");
for(i=1, i<=nitems(files), i++,
dt = open(convert file path(files[i], base(dir)));
dt_final << Concatenate(dt, append to first table(1));
close(dt, no save);
)Re: Guardar nombres de variables incrementales en el bucle For en una listaHola Jim,
Lamentablemente todavía no obtengo el resultado deseado porque no fui claro en cómo expliqué mi situación.
Debería haber especificado que la lista Unique_Files es el nombre de archivo de los CSV almacenados en la ubicación de la carpeta.
Unique_Files = {"FileName1", "FileName2", "FileName3", etc...}
El uso de la función << Obtener nombre da como resultado la lista UniqueTables como
UniqueTables = {"FileName1", "FileName2", "FileName3", etc...}
cuando estoy buscando
UniqueTables = {My_Table_1, My_Table_2, My_Table_3, etc...}
Una vez que tenga la lista UniqueTables en ese formato, mi plan era concatenar algunas de esas tablas y cerrar las tablas de origen que estaban concatenadas.Solo sé cómo hacer esto con el nombre de referencia de la tabla My_Table_1. ¿Hay alguna manera de concatenar tablas desde su nombre de archivo "FileName1"?Si es así, puedo evitar este problema por completo.
¡Gracias de antemano!Usted ha sido muy útil.
Re: Guardar nombres de variables incrementales en el bucle For en una lista¿Puedo preguntarte por qué quieres hacer esto?Hacer esto hace que el script sea muy difícil de soportar porque no se pueden encontrar nombres de variables. Corrijo scripts una vez que los propietarios ya no pueden entender su propio código y esto es algo con lo que siempre me encuentro.
¿Qué te aporta dar múltiples variables que una lista no te aporta?
Porque parece innecesario tener
UniqueTables[1] = My_Table_1 = DataTable("nombre de archivo1");
Re: Guardar nombres de variables incrementales en el bucle For en una listaTodo lo que necesita hacer es recuperar el nombre de la tabla de la referencia de la tabla de datos, así que cambie su referencia a "Mytab" para:
Insert Into( UniqueTables, MyTab << get name)
Todos los mensajes para los distintos elementos de JSL están documentados en la Guía de secuencias de comandos.
Ayuda==>Guía de secuencias de comandos