リスト参照の問題セットアップウィンドウを介してユーザー入力を受け取り、その情報に基づいて不適合コストデータを処理するスクリプトがあります。私はcostcols関数の一部として入力NCコードと処理からのデータ(添付の写真を参照するかスクリプトを実行する)を使用することに問題があります。この関数の目的は、:DISP.TYPEがチェックされた配置オプションの1つではない行を削除し、次に入力された各コードに対して、NC.QTY *:COSTの倍数の新しい列を作成することです。その1つの機能を除いて、スクリプトは正しく実行されます。私が考えることができる唯一のことは、私がどのように異なるリストを設定または参照するかに関するいくつかの問題があるということです。NCコード用に2つのリストと処分用に2つのリストがあります。それぞれの最初の項目は、アクションを実行する必要があるかどうかを判断するためのチェックボックスの結果であり、2番目の項目にはスクリプトで検索する値が含まれています。コードは無効ですが、配置は与えられたチェックボックスに対応するようにハードコードされています。
addcols = Function({},
CCT<<NEW column=""></NEW>リスト参照の問題入力コードのすべての列が正しく表示されるようになったので、さまざまな時間範囲(月、年など)にわたってNCコードごとに要約テーブルを作成します。以前はサマリーテーブルを作成しましたが、ユーザーが最大5つのNCコードを入力できるため、可変数の列を使用することはありません。これを行う方法はありますか?
リスト参照の問題それは物事をはるかに簡単にします!これからそのフォーマットを使い始めます。
リスト参照の問題評価リスト関数に追加して問題を解決しました!ありがとうございます。
リスト参照の問題EvalListも使用することをお勧めします。あなたが "dispchecks [d]"を参照するとき、それはその位置にある変数に評価されるだけです。評価リストを使用すると、実際の値がリストに表示されます。
また、私は将来の長いIfステートメントのためのヒントを持っています。同じIfステートメント内に多数の条件を入れることができ、多数の条件がある場合には複雑さが大幅に軽減されます。以下の抜粋は、式の列のIf文のグループに相当します。
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"
);
リスト参照の問題たぶんここでevallist()の使用が必要です。 このコードを実行してみてください。
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);
お分かりのように、evallist()は変数名をそれらの実際の値に変換します。それが私が望むものです。
リスト参照の問題それは理にかなっている。それを指摘してくれてありがとう。私はスクリプトのその部分を更新しましたが、それでもリストを参照するという最初の問題に苦労しています。
リスト参照の問題私はあなたのコードに潜在的な問題点を見つけました:
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>
あなたのselect文が何も見つけられなかった場合、何も選択されていないというエラーメッセージがログに表示されます。
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);
);