需要将一张表的结果与另一张表中的规格限制进行比较。 如果结果 < 限制然后通过我有一个带有限制的表(限制)。表列是产品、组件 A、组件 B。每个组件下是限制。示例产品,铝,锌
福德 .24 .50
我有另一个表 FG Metals 有一个 PASS/FAIL 列和一个铝列和一个锌列,每行都有结果。示例 PASS/FAIL、铝、锌
.09 .1
我需要将 dt(FG 金属)铝 .09 结果与 dt(限制)铝 .24 进行比较。如果结果小于限制,则将 Pass 放入 PASS/FAIL 列,否则放入 FAIL。
希望我解释得足够好。请让我知道,如果你有任何问题。
韦恩
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制有效。
非常感谢。
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制尝试将代码行更改为
<FONT style="background-color: #ffffff;">Column( colNamesList[theColumn] || " PASS/Fail" ) << delete</FONT> property("formula");
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制嗨,TxNelson,
在脚本中,如果我注释掉—— Column( colNamesList[theColumn] || "PASS/Fail" ) << 删除公式;它运行良好。
</CODE></P><P><CODE class=" language-jsl">只是一个查询——我们是否没有删除列公式,甚至在我们得到我们的列之前? 因为我们的专栏将完成
一旦我们将替换 LSL 和 USL 的值,我们将在 For 循环的下一行进行?
</CODE></P><PRE><CODE class=" language-jsl">colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0, /*show(colNamesList[theColumn] || " PASS/Fail"), Wait (1); */
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
/* Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;*/
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制无论我放置多少等待时间,它只会评估第一列并通过相同的错误。 但是,如果我将它分成两部分并运行它 - 很好! 不知道为什么?
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制dt << 重新运行公式;并等待 (0) - 它们都不适合我。 但是,是的,如果我将我的代码分成两次运行——它工作正常。
还有什么建议吗?
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制您可以添加一个
wait(0);
或者
dt << rerun formulas;
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制嗨,是的,如果我运行代码直到先管理规范限制,然后再运行其余部分,它就可以工作,并添加
显示(colNamesList[theColumn] ||“通过/失败”);没有任何区别。 即使添加了这一行,代码仍然没有一口气运行。
有什么方法可以强制我先评估管理规格限制部分,然后再进一步移动,或者我可以在进入 for 循环之前等待(比如说 - 2 秒)推荐吗?
谢谢。
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制在处理下面的代码之前,管理规格限制可能不会完成。尝试仅通过 Manage Spec Limits 运行。然后一旦完成,运行剩余的代码。
另外,添加
show(colNamesList[theColumn] || " PASS/Fail");
就在第 19 行之前
Eval(
然后看看代码在抱怨什么名字
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制你好,
我进行了检查并确保 LSL 和 USL 都应该在规格表中。 事实上,我还启动了 For 循环—— Column = 10 ,我知道从第 10 列开始,我在表中有规格限制,尽管它应该由 Is Empty 语句处理。
没有任何效果。
谢谢。
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制有问题的代码行是
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
错误语句是说它找不到被引用的列。被引用的列应该已经在之前的语句中创建。
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
要使此语句起作用,需要为公式中引用的列同时存在 LSL 和 USL。我怀疑这是问题所在。我会检查以确保 LSL 和 USL 都存在。
关于你的问题
"还有为什么我们在 LSL 等规格限制中使用“__” "
这不是 JMP 要求。在 Substitute() 函数中,需要具有 JMP 将用于替换的匹配值对。我在匹配值之前和之后使用“__”,只是为了使代码清晰。我还给匹配对的名称赋予了一些有意义的东西。在这种情况下,Substitution() 函数将替换 LSL、引用 Col 和 USL,因此按照我的惯例,我使用 __LSL__、__col__ 和 __USL__。
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制嗨尼尔森,
我在您周五发送给我的脚本中出现以下错误。 任何帮助
还有为什么我们在 LSL 等规格限制中使用“__”。 我试图在 jmp 脚本指南中找到答案,但不能理解太多。
谢谢。

回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制嗨,非常感谢,
是的,就是这样(阅读脚本指南) 我现在正在做一天。 
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制我已将您的要求的解决方案放在下面。但是,您需要花时间阅读脚本指南,以确保您理解我提供的内容,并帮助您理解其他讨论中提供的 JSL
names default to here(1);
dtspecs = Data Table ("Specs_Limits");
dt = Data Table ("Table_A");
Loadlimit = dt << Manage Spec Limits( Y( :BVIA_RES, :COILVIA_RES, :RDR_RES, :TAD_RES,
:WELGL_RES), Load from Limits Table("Specs_Limits.jmp"), Save to Column Properties (1) );
Loadlimit << close window;
colNamesList = dt << get column names(string,continuous);
For( theColumn = 1, theColumn <= N Items( colNamesList ), theColumn++,
Clear Symbols( specs );
specs = Column( dt, colNamesList[theColumn] ) << get property( "Spec Limits" );
If( Is Empty( specs ) == 0,
Eval(
Substitute(
Expr(
dt << New Column( colNamesList[theColumn] || " PASS/Fail",
numeric,
CONTINUOUS,
FORMULA( If( __LSL__ <= __col__ <= __USL__, 1, 0 ) )
);
Column( colNamesList[theColumn] || " PASS/Fail" ) << delete formula;
),
Expr( __LSL__ ), specs["LSL"],
Expr( __col__ ), Parse(":" || colNamesLIst[theColumn] ),
Expr( __USL__ ), specs["USL"]
)
)
);
);回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制你好TxNelson,
我需要类似的解决方案,我试图遵循您提供的解决方案,但无法获得我的结果。 请你帮助我好吗 -
我有两张表——一张是数据表,另一张是规格表。 我需要将主表中的数据与规格表中的规格进行比较,并将其放入一个新列中,分别为 1(通过)和 0(失败)。
有什么帮助吗?
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制吉姆,
效果很好。再次感谢你的帮助。
韦恩
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制
- 限制文件中的各种金属列需要是数字列。
- Metals 数据表中的 Pass/Fail 列需要定义为字符。
这是一个基于您提供的示例数据的脚本......以及上述更改。该代码使用限制数据表来确定要测试的金属。
Names Default To Here( 1 );
dtLimits = Data Table( "Limits sample (1)" );
dtMetals = Data Table( "FG Sample (1)" );
// Get the names of the columns with the metals data in them
metalsColNames = dtLimits << get column names( string, numeric );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( N Rows( dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ) ) > 0,
theProductRow = (dtLimits << get rows where( dtLimits:product == dtMetals:Product[theRow] ))[1];
result = "Pass";
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[theProductRow];
col = Column( dtMetals, metalsColNames[theColumn] );
If( col[theRow] < target,
result = "Fail"
);
);
dtMetals:Name( "Pass/Fail" )[theRow] = result;
)
);回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制如果任何金属失效,则样品失效。 如果所有金属都通过,则样品通过。回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制所要做的就是在限制表中找到正确的行,在金属数据表的行中找到产品。 我会让你修改我的脚本来做到这一点......但是你不需要在你的金属数据表中有一个以上的通过/失败列,因为每种金属都可以通过或失败.. ...或者你是说如果任何金属失败,那么它就是失败,但如果它们都通过了,那么行就通过了????回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制吉姆,
在我的限制文件中,我有多个产品。 Fudd 与铝和极限 0.05 然后奇迹与铝和极限 0.02。 限制文件中的每个产品都位于产品列下。 示例产品,铝,锌
福德 .5 .1
奇迹 .2 .5
请让我知道如何处理产品。
问候,
韦恩
回复:需要将一张表的结果与另一张表的规格限制进行比较。 如果结果 < 限制这是我认为可以满足您要求的脚本

Names Default To Here( 1 );
// Create example data tables
dtLimits = New Table( "Limits",
New Column( "Product", character, values( {"Fudd"} ) ),
New Column( "Aluminum", values( {.24} ) ),
New Column( "Zinc", values( {.50} ) )
);
dtMetals = New Table( "FG Metals",
add rows( 10 ),
New Column( "Pass/Fail Aluminum", character ),
New Column( "Pass/Fail Zinc", character ),
New Column( "Aluminum", formula( Random Uniform( 0, 1 ) ) ),
New Column( "Zinc", formula( Random Uniform( 0, 1 ) ) )
);
// Get the names of the columns with the metals data in them
metalsColNames = dtMetals << get column names( striing, numeric );
// Loop across the columns and down the rows and calculate the pass/fail
For( theColumn = 1, theColumn <= N Items( metalsColNames ), theColumn++,
target = Column( dtLimits, metalsColNames[theColumn] )[1];
col = Column( dtMetals, metalsColNames[theColumn] );
passFail = Column( dtMetals, " Pass/Fail " || metalsColNames[theColumn] );
For( theRow = 1, theRow <= N Rows( dtMetals ), theRow++,
If( col[theRow] < target,
passFail[theRow] = "Fail",
passFail[theRow] = "Pass"
)
);
);回复:需要将一张表的结果与另一张表中的规格限制进行比较。 如果结果 < 限制我附上了示例文件。