Combinar tablas de datos si el número de tablas abiertas varíaHola,
Tengo un script que obtiene elementos elegidos por el usuario de un cuadro de lista. Según la cantidad de elementos seleccionados por el usuario, aparecen varias tablas. La cantidad de tablas de datos nuevas es variable y me gustaría combinarlas todas en una tabla más grande llamada Tabla combinada. Sé que la función concatenar hace esto, pero me gustaría tener un script para acomodar un número de tablas especificado por el usuario.
A partir de este fragmento de código, aparecen varias tablas nuevas denominadas EachChem, EachChem 2, EachChem 3...etc. Me gustaría combinarlos en una tabla más grande llamada Tabla combinada.
For (i = 1, i <= N Items(lt), i++,
dt << Select Where( :chemical == lt[i] );
dt << Get selected rows
dt << Subset(Output Table("EachChem"), Selected Rows(i));
);
Se agradece cualquier ayuda o sugerencia.
Tabla de datosventanasRe: Combinar tablas de datos si el número de tablas abiertas varíaEsto debería hacer lo que quieras.
theExpr = "Data Table( \!"EachChem\!") << Concatenate(";
For( i = 2, i <= N Items( lt ), i++,
theExpr = theExpr || " Data Table( \!"EachChem " || Char( i ) || "\!"),"
);
theExpr = theExpr || "Output Table( \!"Combined Table\!" ) );";
Eval( Parse( theExpr ) );Re: Combinar tablas de datos si el número de tablas abiertas varíaGracias. Esto funcionó.
Si los nombres de las tablas que se van a concatenar también cambian, lo siguiente debería funcionar.
theExpr = " Data Table( \!"" || MaskList[1] || " " || Char( 2 ) || "\!") << Concatenate(";
For( i = 2, i <= N Items(MaskList), i++,
theExpr = theExpr || " Data Table( \!"" || MaskList[i] || " " || Char( 2 ) || "\!"),"
);
theExpr = theExpr || "Output Table( \!"Final Table\!" ) );";
Eval( Parse( theExpr ) );
En el código anterior,
MaskList es una lista que contiene un número variable de máscaras según el usuario. Cada máscara contiene tablas asociadas.
Por ejemplo, la primera tabla se llama Mask1 2 , (la segunda tabla con el nombre llamado Mask1, de ahí el 2 extra) la siguiente tabla que se concatenará se llama Mask9 2 . (la segunda tabla con el nombre llamado Mask9, de ahí el 2 extra) y así sucesivamente.
Esto concatenará Mask1 2 con Mask9 2 y así sucesivamente.
Sólo pongo esto aquí con fines de documentación.