¿Cómo actualizar la tabla después de ordenar?Hola todos,
Tengo un problema con respecto a la clasificación de una tabla. Quería ordenar la tabla por Fecha (ubicada en la columna Fecha1) y lo estoy haciendo después de que se cumple cierta condición. Sin embargo, no ordena ni reemplaza la tabla. EL_resumen después de clasificar. ¿Es necesario refrescarse? También puse un poco de retraso, pensé que había que esperar un tiempo. Cuando no estoy usando reemplazar tabla(1), se crea y se abre la nueva tabla con un nombre diferente (lo que no quiero) y nuevamente los datos en esta tabla no se ordenan. Después de eso, sin embargo, los datos en EL_resumen parece estar actualizado y ordenado. Agradecería señalar lo que me estoy perdiendo. Atentamente
Tabla de datos actuales (EL_summary);
if( N filas(EL_summary) > 0, EL_summary << sort(by(:name("Date1")), Order( Ascending ), replace table(1)));
esperar (1);
Re: ¿Cómo actualizar la tabla después de ordenar?Hola, ¿cuál es la forma oficial de ordenar una tabla de datos a través de JSL con la opción ReemplazarTabla()?
Como se discutió anteriormente, si hay informes abiertos, la secuencia de comandos se bloquea con el mensaje de error:

... incluso si el gráfico no depende del orden en la tabla de datos:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
dt<< Sort( By( :height ), Replace Table, Order( Ascending ));
¿Qué tal reemplazar el texto con algo como:
Desafortunadamente, en la versión actual de Jmp, no existe la posibilidad de ordenar una tabla con informes abiertos.
Jmp no puede reemplazar la tabla existente porque existe alguna posibilidad... hm, ya sabes, las ventanas de informes pueden depender del orden anterior. Desafortunadamente, no hay opción para verificar eso, y no hay opción para ignorarlo. Entonces el Script se detendrá aquí.

Re: ¿Cómo actualizar la tabla después de ordenar?Ok, me las arreglé para ocultar la nueva tabla de datos. Esa tabla de datos era la tabla de datos actual, así que deshabilité su visibilidad usando
Current Data Table() << ShowWindow( 0 );
Gracias a todos por el apoyo. Atentamente.
Re: ¿Cómo actualizar la tabla después de ordenar?Puedes manejar esto de un par de maneras diferentes.
La salida que impide que la tabla de datos se clasifique, se puede mover a un Diario para su visualización, y luego se puede eliminar la visualización original, lo que permitirá que se realice la clasificación.
También puede crear una nueva tabla de datos que sea invisible o privada, lo que evitará que se muestre la nueva tabla de datos.Busque las opciones Invisible o Privado en subconjuntos de la tabla de datos en el Índice de secuencias de comandos.
Re: ¿Cómo actualizar la tabla después de ordenar?Hola, gracias por las sugerencias!
Creé una GUI y la clasificación debe realizarse después de seleccionar un elemento del cuadro de lista. Después de eso, ciertas imágenes deben mostrarse en esta GUI en el orden basado en los valores ordenados. En realidad, JMP no proporciona ninguna información de registro útil que indique el origen del problema. ¿Hay alguna forma de ocultar o hacer invisible la tabla de datos nueva (y no deseada) que se crea después de la clasificación? Eso sería una solución.
Re: ¿Cómo actualizar la tabla después de ordenar?Hola,
Este código funcionó como se esperaba cuando no hay gráficos abiertos:
Untitled = data table("Untitled.jmp");
if( N rows(Untitled) > 0, Untitled << sort(by(:name("Column 1")), Order( Ascending ), replace table(1)));
Pero la clasificación no funciona si tiene algún gráfico abierto,
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending ), replace table(1)));
</DISTRIBUTION>
Mira el archivo de registro y vemos:
JMP cannot replace the existing table because there are report windows that depend on the previous ordering.
Pero si eliminamos la tabla de reemplazo, se ejecutará sin error pero lanzará una nueva tabla de datos con las filas ordenadas que no se desea.
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending )));</DISTRIBUTION>
Por lo tanto, puede consultar el archivo de registro para ver si es informativo. Si tiene gráficos o tablas dependientes abiertos, tal vez necesite repensar la lógica del script. ¿Es posible volver a ordenar antes de hacer tablas y gráficos dependientes, por ejemplo?
Re: ¿Cómo actualizar la tabla después de ordenar?¿Su tabla de datos está entintada en una tabla anterior, por lo que no se puede cambiar?Re: ¿Cómo actualizar la tabla después de ordenar?Use Try para detectar el error y luego maneje el error en consecuencia.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(437, 413),
Graph Spacing(4),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
Try(
dt << Sort(By(:height), Replace Table, Order(Ascending));
,
If(Starts With(exception_msg[1], "JMP cannot replace the existing table because there are report windows"),
dt1 = dt << Sort(By(:age), Order(Ascending)); // will create new table
/*
// if you wish to just keep one, order to create new, close old and rename new
old_name = dt << get name;
Close(dt, no save)
dt1 << set name(old_name);
dt = dt1;
*/
);
);
Uso de JMP > Reformar sus datos > Ordenar tablas de datos
Reemplazar tabla
Reemplaza la tabla de datos original con la tabla ordenada en lugar de crear una nueva tabla con los valores ordenados. Esta opción no está disponible si hay ventanas de informes abiertas generadas a partir de la tabla original.
Re: ¿Cómo actualizar la tabla después de ordenar?Hm, con esta solución alternativa, el script no fallará...
por otro lado: los datos no se ordenarán pero se generará una nueva tabla 
Por el momento, preferiré algo como:
Try (sort,
Caption("Sorry, not possible to sorting the table, please close all reports and sort manually");stop());
Para el futuro, espero que haya algo como
Tabla de datos: obtener informes (y otras opciones)
Try(
sort,
If( New Window( "ask User", ... ),
myAffectedReports = dt << get reports with ordering issues();
myAffectedReports << close window;
sort;
)
)
o
sort(..., ignoreEffectOnReports())
o
sort(..., closeReportsWithOrderingIssue());
Re: ¿Cómo actualizar la tabla después de ordenar?Quiero escribir un complemento que ordene la tabla de datos.
En lugar de Probar (clasificar, mensaje de error) en algún lugar dentro de la ejecución del complemento, quiero informar al usuario al principio que debe cerrar todos los informes antes de iniciar el complemento.
¿Cómo puedo hacer esto con Jmp17?
Re: ¿Cómo actualizar la tabla después de ordenar?Una opción:
- Use << Obtener lista de ventanas para obtener referencias a todas las ventanas abiertas (puede limitar esto a Tipo ("Informes") si lo desea)
- Recorra esa lista y verifique si hay alguno que dependa de la tabla de datos que se está ordenando (debería poder usar el nombre de la ventana del informe O << Obtener tabla de datos. Si el informe pertenece a la tabla de datos, agréguelo a la lista
- Si hay elementos en la lista, mostrar el mensaje al usuario
Re: ¿Cómo actualizar la tabla después de ordenar?Funciona muy bien gracias 
closeMyReports = Function( {dt},
{default local},
AllmyReports = {};
myReports = Get Window List( Type( "Reports" ) );
For Each( {rep}, myReports,
Try(
myList = (rep << Xpath( "//OutlineBox" )) << get scriptable Object();
myDTs = Transform Each( {scriptableObject}, myList, If( Is Empty( scriptableObject ), ., scriptableObject << Get Data Table() ) );
If( Contains( myDTs, dt ),
Insert Into( AllmyReports, rep )
);
)
);
If( N Items( AllmyReports ) > 0,
If(
ex = New Window( "",
<<TYPE></TYPE>
editar: ahora el script también busca informes más complicados con muchas tablas de datos.
Re: ¿Cómo actualizar la tabla después de ordenar?Siguiente paso: hay un comando:
dt << get linked subsets()
