cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
hcarr01
Level VI

Formule colonne

Bonjour à tous,
 
Je cherche à construire une formule par rapport à plusieurs colonnes de ma base de données. Ce n’est pas si simple à comprendre, je vais expliquer mon objectif à l’aide d’un exemple :
 
hcarr01_1-1683891973873.png

 

Partie grise :
 
Ici, voici 4 type d’objet différents (ENT1,..,ENT4). Chacun des objets est associé à un numéro d’avancement (colonne T), ces numéros sont eux reliés à des opérations bien définis.
 
Partie jaune :
 
Ces cellules montrent quels « numéros » vont subir chaque objet, et associe ce numéro à des opérations. Lorsque les cellules sont vides, cela veut dire que l’objet ne subira pas cette opération.
 
 
L’objectif est :
 
- Faire la somme des durées, sachant que l’objet a eu un avancement (Ex : l’objet ENT2 se situe au numéro 1749, donc ce qu’il a fait avant en 1500 ne nous intéresse pas)
 
- Prenons l’objet ENT2, il faudrait faire la somme de la durée 2100 et la durée 2500 car il s’agit des numéros que doit subir cet objet là.
 
 
Merci pour votre aide,
Cordialement
16 REPLIES 16
jthi
Super User

Re: Formule colonne

Names Default To Here(1);

dt = Open("$DOWNLOADS/Test (1).jmp");

// get duration columns
dur_cols = Filter Each({col_name}, dt << Get Column Names("String", Continuous),
	Starts With(col_name, "durée")
);

// for indexing later
num_colnr = Transform Each({col_name}, dur_cols, Word(-1, col_name));

dt << New Column("DUREE TOT", Numeric, Continuous, << Set Each Value(
	colidx = Loc(dt[Row(), num_colnr] > :"opé"n);
	If(N Items(colidx) > 0,
		val = Sum(dt[Row(), dur_cols[colidx]]);
		If(IsMissing(val),
			0
		,
			val
		);
	,
		0
	)
));

Data table subscripting 

-Jarmo
hcarr01
Level VI

Re: Formule colonne

Sur ma base de données je dispose de 900 colonnes différentes (colonnes jaunes), cela veut dire que le nombre « num_colnr » est une liste avec beaucoup de nombres :

 

hcarr01_0-1684148294641.png

 

En exécutant le script JSL que vous m’avez partagé j’obtiens ce type d’erreur :
 
hcarr01_1-1684148380695.png

 

Alors que num_colnr comme sur la photo ci-dessus est une liste de nombre

 

hcarr01
Level VI

Re: Formule colonne

Et en rajoutant "Num" pour convertir en numérique :

num_colnr = Transform Each({col_name}, dur_cols, Num(Word(-1, col_name)));
show(num_colnr);

 j'obtiens ce type d'erreur :

 

hcarr01_0-1684149021360.png

 

jthi
Super User

Re: Formule colonne

Do you have column named "711" in your data table? I do not understand that error message as it is in French and my best guess is that it is same as this

Expecting a number or list of numbers at row 1 in access or evaluation of 'dt[ /*###*/Row(),num_colnr]', 
Bad Argument("1500"), dt[/*###*/Row(), num_colnr] at line 14 in C:\Users\jarmo\Documents\Script.jsl

which could mean that column named "711" is missing.

-Jarmo
hcarr01
Level VI

Re: Formule colonne

 

Oui c'est ma première colonne (parmi toutes les colonnes de couleur jaune) :
hcarr01_0-1684153950481.png

 

jthi
Super User

Re: Formule colonne

Ok, maybe it is then indicating that one (or more) of those columns are missing and not really telling which one. So maybe my logic how I get those from the duree columns is incorrect

-Jarmo
hcarr01
Level VI

Re: Formule colonne

Oui vous avez surement raison, je vais chercher de mon côté.

Merci pour votre aide précieuse !