Salut tout le monde,
J'écris un script qui sélectionne un sous-ensemble d'une table de données en fonction de certains critères :
Exemple dt est ma table de données avec la colonne :Error_ID
J'ai saisi : "dt_subset=dt< Supposons maintenant que la table de données dt ne contienne aucune ligne Error_ID==0, le sous-ensemble dt est vide.
Je m'attendais à ce qu'un dt_subset soit une nouvelle table de données avec les mêmes colonnes que la table dt mais 0 lignes, de sorte que si je vérifie ensuite si "If( !Empty(dt_subset)...)" j'obtiens faux et que je ne continue pas à travailler sur la table dt_subset vide.
J'obtiens en revanche une erreur si j'essaie de vérifier si dt_subset est vide.
En fait, je souhaite pouvoir vérifier si la sélection est vide. Auriez-vous une solution ?
Merci pour votre aide!
Si vous souhaitez simplement vérifier si des lignes sont sélectionnées, vous pouvez utiliser << Obtenir les lignes sélectionnées
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");
);
Lorsque j'ai encore besoin d'une table vide après un tel filtre, je procède généralement comme suit :
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
Si vous souhaitez vérifier dans le tableau qui n'a pas été créé
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();