Liste des problèmes de référenceJ'ai un script qui prend les entrées de l'utilisateur à travers une fenêtre de configuration et basé sur cette information traite les données de coût de non-conformité. Je ne parviens pas à utiliser les données des codes CN et des dispositions saisis (voir l'image ci-jointe ou l'exécution du script) dans le cadre de la fonction costcols. L'objectif de la fonction est de supprimer toutes les lignes où: DISP.TYPE n'est pas l'une des options de disposition vérifiées, puis pour chaque code entré, créez une nouvelle colonne qui est multiple: NC.QTY *: COST. Le script s'exécute correctement, sauf pour cette fonction. La seule chose à laquelle je pense, c’est qu’il ya un problème avec la manière dont j’ai établi ou fait référence aux différentes listes. Il existe deux listes pour les codes NC et deux pour la disposition. Le premier pour chacun est le résultat de la case à cocher pour déterminer si une action doit être entreprise et le second contient les valeurs à rechercher dans le script. Les codes sont variables, mais les dispositions sont codées en dur pour correspondre aux cases à cocher données.
addcols = Function({},
CCT<<NEW column=""></NEW>Re: Liste des problèmes de référencePour aller de l'avant, maintenant que toutes les colonnes des codes entrés s'affichent correctement, vous devez créer des tableaux récapitulatifs par code NC sur différentes plages de temps (mois, année, etc.). J'ai déjà préparé des tableaux récapitulatifs, mais jamais avec un nombre variable de colonnes, car l'utilisateur peut entrer jusqu'à 5 codes NC. Y a-t-il un moyen de faire cela?
Re: Liste des problèmes de référenceCela rend les choses beaucoup plus simples! Je vais commencer à utiliser ce format à partir de maintenant.
Re: Liste des problèmes de référenceL'ajout de la fonction Liste d'évaluation a résolu le problème! Merci!
Re: Liste des problèmes de référenceJ'allais suggérer d'utiliser EvalList également. Lorsque vous faites référence à "dispchecks [d]", la valeur correspondant à la variable se trouvant dans cette position est évaluée, ce qui ne peut jamais être égal à 1. Liste d'évaluation fera apparaître les valeurs réelles dans la liste.
Aussi, j'ai un conseil pour les futures déclarations Si longues. Vous pouvez mettre plusieurs conditions dans la même instruction If, ce qui réduit considérablement la complexité lorsque vous avez un grand nombre de conditions. L'extrait ci-dessous est équivalent au groupe d'instructions If de votre colonne de formule.
If(
Month( :DETECT.DATE ) == 1, "January",
Month( :DETECT.DATE ) == 2, "February",
Month( :DETECT.DATE ) == 3, "March",
Month( :DETECT.DATE ) == 4, "April",
Month( :DETECT.DATE ) == 5, "May",
Month( :DETECT.DATE ) == 6, "June",
Month( :DETECT.DATE ) == 7, "July",
Month( :DETECT.DATE ) == 8, "August",
Month( :DETECT.DATE ) == 9, "September",
Month( :DETECT.DATE ) == 10, "October",
Month( :DETECT.DATE ) == 11, "November",
Month( :DETECT.DATE ) == 12, "December",
"You did something wrong"
);
Re: Liste des problèmes de référencePeut-être que l'utilisation de evallist () est nécessaire ici. Essayez d'exécuter ce code:
code1a = "aaa";
code2a = "bbb";
code3a = "ccc";
code4a = "ddd";
code5a = "eee";
codechecks1 = {code1a, code2a, code3a, code4a, code5a};
codechecks2 = evallist({code1a, code2a, code3a, code4a, code5a});
print(codechecks1);
print(codechecks2);
Comme vous pouvez le constater, evallist () convertit les noms de variables en leurs valeurs réelles, ce que je pense que vous voulez.
Re: Liste des problèmes de référenceÇa a du sens. Merci d'avoir fait remarquer cela. J'ai mis à jour cette section du script, mais je suis toujours aux prises avec le problème original du référencement des listes.
Re: Liste des problèmes de référenceJ'ai trouvé un problème potentiel dans votre code:
CCT<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN>Select Where<SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN>DISP<SPAN class="token punctuation">.</SPAN>TYPES <SPAN class="token operator">==</SPAN> <SPAN class="token string">"NOTDEFINED"</SPAN> <SPAN class="token operator">|</SPAN> <SPAN class="token punctuation">:</SPAN>DISP<SPAN class="token punctuation">.</SPAN>TYPES <SPAN class="token operator">==</SPAN> <SPAN class="token string">"DEVIATE"</SPAN> <SPAN class="token operator">|</SPAN> <SPAN class="token punctuation">:</SPAN>DISP<SPAN class="token punctuation">.</SPAN>TYPES <SPAN class="token operator">==</SPAN> <SPAN class="token string">"REVIEWED & REVERSED"</SPAN> <SPAN class="token operator">|</SPAN> <SPAN class="token punctuation">:</SPAN>DISP<SPAN class="token punctuation">.</SPAN>TYPES <SPAN class="token operator">==</SPAN> <SPAN class="token string">"SCRAP"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
CCT<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN>Delete Rows<SPAN class="token punctuation">;</SPAN>
CCT<SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN>Clear Select<SPAN class="token punctuation">;</SPAN>
Si votre instruction select ne trouve rien, vous obtiendrez dans le journal un message d'erreur indiquant que rien n'est sélectionné de manière plus sûre:
del_rows = CCT << get rows Where(:DISP.TYPES == "NOTDEFINED" | :DISP.TYPES == "DEVIATE" | :DISP.TYPES == "REVIEWED & REVERSED" | :DISP.TYPES == "SCRAP");
if (nrows(del_rows) > 0,
cct << delete rows(del_rows);
);