数式を変更する添付ファイルが示すように、列 ROW(3)の式は1 行に対してのみ有効です。
下の色の通り、「Forループを使用」の式列は、数式にForループを含めることができないことがわかっているので、Forループ部分を削除し、「 :Scan input[i]」を他の式または他の関数に変更して実装します。「 :Scan input[1] 」から「 :Scan input[終了行番号] 」に変更すると、「Scan input」列の各行に基づいて自動的に更新されます。修正にご協力ください。ありがとうございます!
For(i = 1, i <= N Rows(), i++,
If(Is Missing(:Scan input),
"",
If(Col Sum(:Blacklist == :Scan input[i]) > 0,
"NG",
"OK"
)
)
)
自動化とスクリプトデータの探索と視覚化ウィンドウズRe: 式の変更数式に For ループを含めることはできないとおっしゃいました。数式内の For ループに関する実際の説明は、数式は各行に自動的に適用されるため、データ テーブルの各行をループするために数式で For ループを使用する必要がないということです。
ただし、各行で For ループを実行する必要がある場合は、確かに使用できます。
ここに、あなたが望む結果をもたらす数式を書く3つの方法があります。

If( Is Missing( :Scan input ),
theResult = "",
theResult = "OK";
For( i = 1, i <= N Rows( Current Data Table() ), i++,
If( :Blacklist == :Scan input[i],
theResult = "NG";
Break();
)
);
);
theResult;
If( Is Missing( :Scan input ),
"",
curBlacklist = :Blacklist;
If( N Rows( Current Data Table() << get rows where( :Scan input == curBlacklist ) ) > 0,
"NG",
"OK"
);
)
As Constant( Summarize( ScanList = by( :Scan input ) ) );
If( Is Missing( :Scan input ),
"",
If( N Rows( Loc( ScanList, :Blacklist ) ) > 0,
"NG",
"OK"
)
);
Re: 式の変更ありがとうございます。ただし、3、4、5 行目の正しい結果は NG と表示されるはずです。まだ解決されていません。
Re: 式の変更ありがとう!ただし、3 行目と 5 行目の正しい結果は NG と表示されるはずです。まだ解決されていません。
Re: 式の変更「NG」または「OK」の結果はどのように判定されますか(JSLではなく言葉で)?
Re: 式の変更私が提供した数式はすべて、特定の行のブラック リストの値を調べ、次にスキャン入力のすべての行を調べて、同じ値を持つ行があるかどうかを確認します。
私はあなたがやろうとしていることを誤解していたに違いありません。それがあなたが提供した JSL がやろうとしていることだと思いました。あなたが望む結果について説明していただけますか?
Re: 式の変更すべてのブラックリスト列の結果は NG です。実際のシナリオでは、フィクスチャによって生成された製品がすでに NG であることがわかっています。それらを見つけてバーコード ガンでスキャン入力列にスキャンする必要があり、「スキャン入力」列の値がブラックリスト列の任意の行にある限り、NG が表示されます。たとえば、行 1 は完全に等しいため NG が表示され、行 3 は完全に等しくありませんが、ブラックリスト列の行 1 に「X1」が表示されるため、NG が表示されます。
Re: 式の変更すべてのブラックリスト値をリスト/連想配列に収集し、現在の行の値をそれと比較します。
As Constant(
bl = :Blacklist << get values;
);
If(!IsMissing(:Scan input),
If(Contains(bl, :Scan input),
"NG"
,
"OK"
);
,
""
);

Re: 式の変更すべてのブラックリスト列の結果は NG です。順序に関係なく、「スキャン入力」列の値がブラックリスト列のどの行にでも表示されていれば、NG が表示されます。この数式を使用すると、スキャン処理中に不良品を簡単に見つけることができます。