Esto está relacionado con el script de partición, estoy tratando de guardar las filas seleccionadas y no seleccionadas como tablas diferentes después de la función de partición. Pero cuando hago eso, todo el script JSL entra en un bucle infinito. ¿Hay alguna forma de resolver esto?
Supongo que entra en un bucle infinito porque realiza una nueva selección de filas dentro del controlador de estado de fila (selección de fila invertida). Puede intentar evitar la selección de filas utilizando el parámetro a ya lo tiene en la función (debería decirle a las filas qué estados cambiaron) con una idea de esto:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/big class.jmp");
tableCount = 0;
theRows = [];
filepath = "$Desktop";
f = Function({a},
// Set dupRows to the previously selected rows
dupRows = theRows;
// Get the current selected rows
theRows = a;
If(N Rows(theRows) > 0,
// check to see if there are the same number of rows
// then validate the rows are different rows before saving
If(N Rows(theRows) == N Rows(dupRows),
If(Sum(dupRows == theRows) != N Rows(theRows),
tableCount++;
dtTemp = dt << subset(invisible, rows(theRows), selected columns(0));
dtSEG = dt << subset(rows(dupRows), selected columns(0));
Close(dtTemp, save(filepath || "\" || "part" || ".jmp"));
Close(dtSEG, save(filepath || "\" || "seg2" || ".jmp"));
)
,
// If not the same number of selected rows, save the subset
tableCount++;
dtTemp = dt << subset(invisible, rows(theRows), selected columns(0));
dtSEG = dt << subset(rows(dupRows), selected columns(0));
Close(dtTemp, save(filepath || "\" || "part" || Char(tableCount) || ".jmp"));
Close(dtSEG, save(filepath || "\" || "seg2" || Char(tableCount) || ".jmp"));
)
);
Show(a, tableCount); //debug print
);
rs = Current Data Table() << make row state handler(f);Lo más probable es que evite el controlador de estado de fila y use algún tipo de ventana nueva en la que el usuario pueda presionar un botón cuando se hayan realizado las selecciones. Esto se debe a que he tenido algunos problemas con los controladores de estado de fila y trato de evitarlos siempre que sea posible.
Gracias por la ayuda. Ahora, funciona correctamente, eliminé el controlador de estado de fila y usé una función que se llama al cerrar la ventana. Esto hace la creación de dos subconjuntos.