Ciao a tutti,
Sto scrivendo uno script che seleziona un sottoinsieme di dati da una tabella in base ad alcuni criteri:
Esempio dt è la mia tabella dati con la colonna :Error_ID
Ho inserito: "dt_subset=dt< Supponiamo ora che la tabella dati dt non contenga righe con Error_ID==0 e che il sottoinsieme dt sia vuoto.
Mi sarei aspettato che dt_subset fosse una nuova tabella dati con le stesse colonne della tabella dt ma con 0 righe, in modo che se poi verifico se "If( !Empty(dt_subset)...)" ottengo false e non continuo a lavorare sulla tabella dt_subset vuota.
Invece ottengo un errore se provo a controllare se dt_subset è vuoto.
In pratica, vorrei poter verificare se la selezione è vuota. Avete una soluzione?
Grazie per l'aiuto!
Se desideri semplicemente verificare se sono state selezionate delle righe, puoi utilizzare << Ottieni righe selezionate
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
Quando, dopo un filtro del genere, ho ancora bisogno di una tabella vuota, di solito faccio qualcosa del genere
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
Se desideri controllare dalla tabella che non è stata creata
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();