指定单独数据表中的列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我打算编写一个脚本,将数据表 1 中的列中的值与数据表 2 中的列中最接近的匹配值相匹配。是否可以编写 JSL 平台以允许来自两个不同数据表的输入?如果没有,有人知道一个好的替代方法吗?
回复:指定单独数据表中的列谢谢吉姆!
回复:指定单独数据表中的列N Table() 返回打开的数据表的数量。
您可以循环浏览它们并获取它们的名字
对于(I=1, I<= N 表(),I++,
show(数据表(I)<<获取名称);
);
回复:指定单独数据表中的列谢谢吉姆。您知道有一个函数可以返回打开的数据表列表吗?
回复:指定单独数据表中的列在同一显示窗口中从不同数据表填充 2 个 Col List Box() 没有限制。如果您转到帮助==>脚本索引,并查看显示框的第三个示例 Col List Box(),您将看到一个示例,该示例显示一个数据表中的列,并允许您选择一列。通过复制代码,但将对引用变量的“dt”引用更改为第二个数据表,可以轻松地将示例脚本扩展到同一显示窗口中。
回复:指定单独数据表中的列嗨吉姆,
在我的最终脚本中,我想创建一个可以添加到加载项的平台,以便用户将拥有一个从 dt1 和 dt2 中选择列的界面。这可能吗?如果没有,您知道解决方法吗?
// 平台输入示例。
名称默认为此处( 1 ) ;
dt =当前数据表() ;
新窗户( “按最近匹配合并” ,
<<莫代尔,
文本框( “选择输入” ) ,
H 列表框(
面板盒( “选择 dt1 列” ,获取列=列列表框( dt ,全部) ) , // 从 dt1 获取列。
// 添加一些脚本以从 dt2 获取列。
V 列表框(
面板盒( “dt1 列” ,
阵容盒(北科尔( 2 ) ,
按钮盒( “dt1 列” ,第 1 列<<附加(获取列<<被选中) ) ,
第 1 列=列列表框( N 线( 1 ) ,最大物品数( 1 ) ,数字)
)
) ,
面板盒( “dt2 列” ,
阵容盒(北科尔( 2 ) ,
按钮盒( “dt2 列” ,列2 <<附加(获取列<<被选中) ) ,
列2 =列列表框( N 线( 1 ) ,最大物品数( 1 ) ,数字)
)
)
)
)
) ;
回复:指定单独数据表中的列嗨吉姆,
谢谢你的剧本;我可能会在我的实现中使用它。我添加了几行来解决 dt1 中的值超出 dt2 中的值的情况。
名称默认为此处( 1 ) ;
// 打开样本数据表
dt =打开( “$SAMPLE_DATA/半导体能力.jmp” ) ;
// 创建几个数据表来展示如何进行查找
// 到多个表
dt1 = dt <<子集(选定的行( 0 ) ,列( NPN1 ) ) ;
dt2 = dt <<子集(选定的行( 0 ) ,列( NPN2 ) ) ;
关闭( dt ,不保存) ;
// 对表进行排序以查找最接近的值
dt2 <<种类(经过( NPN2 ) ,更换表( 1 ) ) ;
// 在第一个表中创建一列来保存行号
// 从最接近它的第二个表开始
dt1 <<新专栏( “最接近的行号” ) ;
// 创建一个列,其中第二行包含行号
// 数据表,因此可以用来与第一个表连接
dt2 <<新专栏( “行号” ,价值观( 1 :: N 行( dt2 ) ) ) ;
// 从第二个表中查找最接近的值
// 第一个数据表中的值
为了(我= 1 ,我<= N 行( dt1 ) ,我++,
精选= dt2 <<获取行,其中( dt2 : NPN2 > dt1 : NPN1 [我] ) ;
如果( N 行(精选) == 0 ,
dt1 :最接近的行号[我] = N 行( dt2 ) , // 针对以下情况添加:TheSelected 为空
如果(精选[ 1 ] > 1 ,
如果( dt2 : NPN2 [所选择的[ 1 ]] - dt1 : NPN1 [我] > dt1 : NPN1 [我] - dt2 : NPN2 [所选择的[ 1 ] - 1 ] ,
dt1 :最接近的行号[我] =所选择的[ 1 ] ,
dt1 :最接近的行号[我] =所选择的[ 1 ] - 1
) ,
dt1 :最接近的行号[我] =所选择的[ 1 ] ; // 添加案例:TheSelected[1] == 1
)
) ;
) ;
// 根据找到的最接近的值连接表
dt连接= dt1 <<加入(
和( dt2 ) ,
输出表名称( “加入最接近的值” ) ,
通过匹配列( :最接近的行号= :行号) ,
丢弃倍数( 0 , 0 ) ,
包括不匹配项( 1 , 0 ) ,
保留主表顺序( 1 )
) ;
回复:指定单独数据表中的列以下是一个示例脚本,演示了您可以执行所需操作的方法之一:
名称默认为此处( 1 );
// 打开样本数据表
dt =打开( “$SAMPLE_DATA/半导体能力.jmp” );
// 创建几个数据表来展示如何进行查找
// 到多个表
dt1 = dt <<子集( 选定的行( 0 ), 列( npn1 ) );
dt2 = dt <<子集( 选定的行( 0 ), 列( npn2 ) );
关闭( dt , nosave );
// 对表进行排序以查找最接近的值
dt2 <<种类(通过(NPN2),替换表( 1 ) );
// 在第一个表中创建一列来保存行号
// 从最接近它的第二个表开始
dt1 <<新专栏( “最接近的行号” );
// 创建一个列,其中第二行包含行号
// 数据表,因此可以用来与第一个表连接
dt2 <<新专栏( “行号” ,值( 1 :: N 行(dt2)));
// 从第二个表中查找最接近的值
// 第一个数据表中的值
为了(我= 1 , 我 <= N 行( dt1 ), i++,
所选 = dt2 <<获取行,其中( dt2:NPN2 > dt1:NPN1 );
如果( 选定的[ 1 ] > 1 ,
如果( dt2:NPN2[所选的[ 1 ]] - dt1:NPN1 > dt1:NPN1 - dt2:NPN2[选定的[ 1 ]- 1 ],
dt1:最接近的行号= 所选[ 1 ],
dt1:最接近的行号= 所选[ 1 ]- 1
)
);
);
// 根据找到的最接近的值连接表
dt 连接 = dt1 <<加入(
With( dt52 ),输出表名称( “加入最接近的值” ),
通过匹配列(:最接近的行号=:行号),
删除倍数( 0 , 0 ),
包括不匹配项( 1 , 0 ),
保留主表顺序( 1 )
);