如果条件你好
我有三个表,可以将它们称为dt_A,dt_B和dt_C。 来自表dt_A和dt_B的数据被上载或串联到dt_C中。
由于来自dt_A或dt_B的数据可以由不同的用户添加到dt_ C中,并且可以在不同的时间生成。 因此,为了避免对C进行多次添加,我决定首先检查是否已经存在。 我的想法很简单:
date = dt_A:Name(“测量日期”)[i];
lot = dt_A:Lotname [i];
晶圆= dt_A:晶圆编号[i];
chip = dt_A:Position [i];
对于每一行(
if(:Name(“测量日期”)==日期&:Lotname ==批次&:WaferNumber ==晶片&:Position ==芯片,a = 1,a = 0);
);
//如果找到值,则a = 1
//如果未找到值,则a = 0
这就是我面临的问题。 我已经在dt_A中生成了许多数据,其中一些已经在dt_C中提供了。 即使条件成立一个= 1 ,结果是a = 0 。
但是,当我运行时:
dt_C << select where(:Name(“测量日期”)==日期&:地名==批次&:WaferNumber ==晶片&:Position ==芯片);
dt_C中的行被选中。
任何想法出在哪里?
数据表回复:如果条件关于在哪个数据表上执行操作,使用For Each Row()可能会使JMP感到困惑。 确保它在正确的数据表上运行。
一个或另一个数据表值中的字符变量中是否有任何前导或尾随空格?
是否以相同方式保存和显示日期值。 如果您使用m / d / y格式显示日期时间值,并且数据中包含时间成分,则该日期时间值将与没有该时间值的日期时间值相同回复:如果条件谢谢吉姆的建议:)
实际上,对于每个row()函数,我之前都有一个行当前数据表(dt_C)。 我还检查了日期。 它可以正常工作。 实际导致错误的是表中的“ chip”:位置其格式为字符,建模类型为名义。 芯片只是一个字符。 这是一个错误。
我一直在调试它。:)回复:如果条件尝试使用Trim()函数进行:位置和芯片比较回复:如果条件我已经解决了一些问题,并且由于select函数可以正常工作,因此我的解决方案很简单:
dt_C << Select Where(
:Name( "measurement date" ) == date:Lotname == lot & :WaferNumber == wafer & :Position == chip
);
If( N Rows( dt_C << get selected rows ) > 0,
a = 1,
a = 0
);
在这种情况下,程序始终返回正确的“ a”值。 连接或更新数据的进一步概念可以正常工作:)