带有 ID 后缀的链接列搞乱了列名的使用我觉得我有点疯狂了。 我有一个列名称,通过列选择器框将其放入变量中。 然后我稍后操作它,但不幸的是该列是链接列,因此它附加了“[ID]”。 一切都很好,直到我尝试 Char() ,突然出现转义字符:“{\!”Solvent[ID]\!”}”。 因为这些字符很特殊,所以它们弄乱了引号,并且它如何处理应该修复它的第三个问号似乎非常挑剔。 也许我把额外的引号放在了错误的地方,但我很确定我不是基于文档。 我尝试过 regex、munger、substitute、Eval Expr,但似乎没有什么能够将其转换为我需要的正确类型,这只是一个字符串,可以放入 by() 的列函数等中进行汇总。 我觉得我现在误解了一些东西,因为这并没有那么困难。
谢谢!
自动化和脚本编写视窗回复:带有 ID 后缀的链接列搞乱了列名的使用为什么需要在该列名上使用 Char? 一般来说,“永远”不需要它(除非您只需要名称并且您很可能已经拥有它)。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Big Class Families.jmp");
dt << Select Where(:name == "ROBERT") << Delete Rows << Clear Select;
dt2 << Select Where(:name == "ROBERT") << Delete Rows << Clear Select;
dt:name << Set Property("Link ID", 1);
dt2:name << Set Property("Link Reference", Reference Table("Big Class.jmp"));
nw = New Window("",
H List Box(
Filter Col Selector(Datatable(dt2)),
clb = Col List Box(Datatable(dt2))
)
);
clb << Set Items(
{"age[name]", "sex[name]", "height[name]", "weight[name]"}
);
sel = clb << get items; // {"age[name]", "sex[name]", "height[name]", "weight[name]"}
show(sel);
show(Char(sel));
Write("\!N\!N");
Write(char(sel));回复:带有 ID 后缀的链接列搞乱了列名的使用@jthi谢谢回复! 所以我不只是做一个简单的相等的原因是因为每次我尝试访问单个成员列名称列表时,我总是得到与此错误类似的内容(与其他命令类似):
Send Expects Scriptable Object at row 1 in access or evaluation of 'Send' , clb << /*###*/Get( 1 ) /*###*/
我尝试按照您建议的方式使用 get items 命令访问它,但该错误不断弹出。 下面的代码显示了变量首先出现的位置(majorVar 和minorVar)。 我以前从未使用过 window:xxx 语法,所以也许有某种方法可以处理我不理解的变量?
New Window("Select Variables", << Type("Modal Dialog"),
<<ON validate="">majorVar = window:lbMajor << Get Selected;
<FONT color="#339966">minorVar</FONT> = window:lbMinor << Get Selected;
If( N Items( <FONT color="#FF0000">majorVar</FONT> ) & N Items( <FONT color="#339966">minorVar</FONT> ) & <FONT color="#FF0000">majorVar</FONT> != <FONT color="#339966">minorVar</FONT>,
window:validated = 1
,
window:validated = 0
);
window:ok button << Enable( window:validated )
);
H List Box(
V List Box(
Text Box("Select Major Variable"),
window:lbMajor = List Box(combinedCols, <<SET max="" selected="">majorVar = window:lbMajor << Get Selected;
<FONT color="#339966">minorVar</FONT> = window:lbMinor << Get Selected;
If( N Items( <FONT color="#FF0000">majorVar</FONT> ) & N Items( <FONT color="#339966">minorVar</FONT> ) & <FONT color="#FF0000">majorVar</FONT> != <FONT color="#339966">minorVar</FONT>,
window:validated = 1
,
window:validated = 0
);
If( window:validated,
Print("Processing with major: " || Char(<FONT color="#FF0000">majorVar</FONT>) || ", minor: " || Char(<FONT color="#FF0000">minorVar</FONT>));
Window("Select Variables") << Close Window;
,
Beep(); // Optional: Add a beep sound for alert
Show("Invalid Selection");
{window:lbMajor, window:lbMinor} << Select; window:lbMajor << Inval << Update Window;
Wait( 0.25 );
{window:lbMajor, window:lbMinor} << DeSelect; window:lbMajor << Inval << Update Window;
Wait( 0.25 );
{window:lbMajor, window:lbMinor} << Select; window:lbMajor << Inval << Update Window;
Wait( 0.25 );
{window:lbMajor, window:lbMinor} << DeSelect; window:lbMajor << Inval << Update Window;
)
,
<<ENABLE></ENABLE></SET></ON>回复:带有 ID 后缀的链接列搞乱了列名的使用使用列表框而不是筛选列选择器或列列表框是否有特定原因? 由于您似乎已经有了输入验证器,并且必须从两个列表中选择一个值,因此您可以只从两个列表中获取第一个索引(<< Get Selected 返回字符串列表)

majorVar = majorVar[1];
minorVar = minorVar[1];
回复:带 ID 后缀的链接列导致列名使用混乱成功了!谢谢!