Ciò è correlato allo script di partizione, sto cercando di salvare le righe selezionate e non selezionate come tabelle diverse dopo la funzione di partizione. Ma quando lo faccio, l'intero script JSL entra in un ciclo infinito. C'è un modo per risolverlo?
Grazie per l'aiuto. Ora funziona correttamente, ho rimosso il gestore dello stato della riga e ho utilizzato una funzione che viene richiamata alla chiusura della finestra. Questo fa la creazione di due sottoinsiemi.
Immagino che entri in un ciclo infinito perché effettui una nuova selezione di righe all'interno del gestore dello stato della riga (inverti la selezione della riga). Potresti provare a evitare la selezione delle righe utilizzando il parametro UN hai già nella funzione (dovrebbe indicare le righe in cui sono stati modificati gli stati) con qualche idea di questo:
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);Molto probabilmente eviterei il gestore dello stato della riga e utilizzerei una sorta di nuova finestra in cui l'utente può premere un pulsante una volta effettuate le selezioni. Questo perché ho avuto diversi problemi con i gestori degli stati di riga e cerco di evitarli quando possibile.