Liste ReferenzproblemeIch habe ein Skript, das Benutzereingaben durch ein Setup-Fenster durchführt und basierend auf diesen Informationen Nicht-Konformitätskosten-Daten verarbeitet. Ich habe Probleme mit der Verwendung der Daten aus den eingegebenen NC-Codes und Dispositionen (siehe beigefügtes Bild oder Ausführen des Skripts) als Teil der costcols-Funktion. Das Ziel der Funktion ist es, alle Zeilen zu entfernen, in denen die: DISP.TYPE nicht eine der aktivierten Dispositionsoptionen ist, und dann für jeden eingegebenen Code eine neue Spalte erstellen, die multipliziert: NC.QTY *: COST. Das Skript wird mit Ausnahme dieser einen Funktion ordnungsgemäß ausgeführt. Das einzige, woran ich denke, ist, dass es einige Probleme gibt, wie ich die verschiedenen Listen aufbaue oder referenziere. Es gibt zwei Listen für die NC-Codes und zwei für die Disposition. Das erste für jedes ist das Kontrollkästchen, um zu bestimmen, ob eine Aktion ausgeführt werden muss, und das zweite enthält die Werte, nach denen im Skript gesucht werden soll. Die Codes sind variabel, aber die Dispositionen sind fest codiert, um den angegebenen Kontrollkästchen zu entsprechen.
addcols = Function({},
CCT<<NEW column=""></NEW>Re: List ReferenzproblemeNun, da ich alle Spalten für die eingegebenen Codes richtig angezeigt habe, erstellen Sie Übersichtstabellen für jeden NC-Code über verschiedene Zeiträume (Monat, Jahr usw.). Ich habe bereits Übersichtstabellen erstellt, aber niemals eine variable Spaltenanzahl, da der Benutzer bis zu 5 NC-Codes eingeben kann. Gibt es eine Möglichkeit, dies zu tun?
Re: List ReferenzproblemeDas macht die Sache viel einfacher! Ich werde ab jetzt dieses Format verwenden.
Re: List ReferenzproblemeDas Hinzufügen der Eval List-Funktion hat das Problem behoben! Vielen Dank!
Re: List ReferenzproblemeIch wollte vorschlagen, dass Sie auch EvalList verwenden. Wenn Sie auf "dispchecks [d]" verweisen, wird nur die Variable an dieser Position ausgewertet, die niemals gleich 1 sein kann. Bei der Eval List werden die tatsächlichen Werte in der Liste angezeigt.
Ich habe auch einen Tipp für spätere If-Aussagen. Sie können viele Bedingungen innerhalb derselben If-Anweisung angeben, wodurch die Komplexität bei einer großen Anzahl von Bedingungen erheblich reduziert wird. Der folgende Auszug entspricht der Gruppe der If-Anweisungen in Ihrer Formelspalte.
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: List ReferenzproblemeMöglicherweise wird hier evallist () verwendet. Führen Sie diesen Code aus:
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);
Wie Sie sehen, konvertiert evallist () die Variablennamen in ihre tatsächlichen Werte, was Sie meiner Meinung nach wünschen.
Re: List ReferenzproblemeDas macht Sinn. Danke, dass du darauf hingewiesen hast. Ich habe diesen Abschnitt des Skripts aktualisiert, habe aber immer noch Probleme mit der ursprünglichen Ausgabe der Referenzierung der Listen.
Re: List ReferenzproblemeIch habe in Ihrem Code einen potenziellen Problempunkt gefunden:
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>
Wenn Ihre select-Anweisung nichts findet, wird im Protokoll eine Fehlermeldung angezeigt, in der nichts ausgewählt wurde.
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);
);