帶有 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 後綴的連結列導致列名使用混亂成功了!謝謝!