如何根據循環創建 dt 對象的變量名你好,
如何創建 dt 對象的變量名 - dt_valuesarray[i] ?
valuesarray = {};<BR />Summarize( dt_values, valuesarray = by( :Dis ) );<BR />
For( i = 1, i <= N Items( valuesarray ), i++,
dt_values << Select where( :Dis == valuesarray[i] );
<FONT color="#FF0000"><STRONG>dt_valuesarray[i]</STRONG></FONT>=Data Table( "Summary values" ) <<
Subset(
Output Table( "Summary " || valuesarray[i] || ),
Selected Rows( 1 ),
Selected columns only( 0 )
));
謝謝
Re: 如何根據循環創建 dt 對象的變量名@txnelson @Mark_Bailey , 謝謝你的支持。
我會等待按鈕框的下一個版本:)
我找到了一種“解決”它的方法-
我在大綱框(關閉)中使用,它模擬為按鈕框。
Re: 如何根據循環創建 dt 對象的變量名您的按鈕是一個 JMP 對象。 單擊該按鈕會使 JMP 評估與該按鈕關聯的腳本。 您的瀏覽器不知道如何評估 JSL。
JMP 14 開始了針對 HTML5 的單獨並行開發。 通過保存平台開發 HTML5 內容繼續@txnelson說。 不過,現在還有另一種方法。 查看精選JMP 公共內容理解第二種方法。 它需要 JMP 服務器和額外的 HTML5 代碼來“發布”內容而不是保存內容。
此版本的 JMP 也可用作JMP 直播供私人使用。
Re: 如何根據循環創建 dt 對象的變量名目前在交互式 HTML 或按鈕框的 HTML 中是否還有其他 JMP 功能?
事實上,我正在為交互式 HTML\HTML 頁面尋找解決方案
該頁面將包括選項卡框和按鈕框(正如您在上面幫助我寫的那樣)。
你有解決這個問題的方法嗎?Re: 如何根據循環創建 dt 對象的變量名目前,並非所有 JMP 功能都在交互式 HTML 中可用。隨著新版本的發布,更多功能變得可用。HTML 顯示不支持用戶指定的代碼,例如您為按鈕框編寫的腳本。
Re: 如何根據循環創建 dt 對象的變量名在 JMP 中效果很好,但在“交互式 HTML”中我無法單擊選項卡 - 見附件。
該按鈕是不可見的。

Re: 如何根據循環創建 dt 對象的變量名日誌說什麼?Re: 如何根據循環創建 dt 對象的變量名你好,
這絕對是一個簡單的改變。
下次我一定會使用指南
謝謝!
這可行,但是當我將文件另存為 HTML 時出現問題,向下鑽取的鏈接(“單擊此處”)不起作用。
可能是什麼原因?
(我在指南中沒有找到它:))
Re: 如何根據循環創建 dt 對象的變量名當您開始使用新功能時,您需要研究它的選項和示例。Tab() 函數就是如此。您需要閱讀 Scripting Guide 和 Tab() 函數上的區域,然後轉到 Scripting Index,並研究其中顯示的 Tab() 函數的所有消息(選項)和示例。這是必須從上一個示例到與您提供的輸出匹配的新示例的簡單修改
Names Default To Here( 1 );
dt_values = Current Data Table();
dt_valuesarray = {};
Summarize( dt_values, valuesarray = by( :Dis ) );
For( i = 1, i <= N Items( valuesarray ), i++,
dt_values << Select where( :Dis == valuesarray[i] );
mydt = dt_values << Subset( Output Table( "Summary " || valuesarray[i] ), Selected Rows( 1 ), Selected columns only( 0 ) );
Insert Into( dt_valuesarray, mydt );
Current Journal() << Close window( nosave );
dt_valuesarray[i]() << save( "\\SUMMARY\" || valuesarray[i] || ".jmp " );
dt_valuesarray[i]() << journal;
Current Journal() << Save HTML( "\\SUMMARY\" || valuesarray[i] || ".html" );
Current Journal() << Close window( nosave );
);
//------------------ new window
charts = {};
ob = Outline Box( "Summary Data", Outline Box( "Summary Tables", myTab = Tab Box() ) );
For( i = 1, i <= N Items( valuesarray ), i++,
myTab << Insert(
valuesarray[i],
Eval(
Parse(
"charts[" || Char( i ) ||
"] = Charts_1 = V List Box(
V List Box( dt_valuesarray[i] << get as report() ),
Outline Box( \!"Drill Down Analysis\!", BB = Button Box( \!"Click Here\!", Open( \!"\\SUMMARY\"
|| valuesarray[i] || ".html\!" ))));"
)
);
//dt_vlist << append( );
)
);
dt_tables = New Window( "Tables", ob );Re: 如何根據循環創建 dt 對象的變量名@txnelson非常感謝您的回复 - 我現在就試試。
對不起,我在上一條評論中添加了一張圖片(最終輸出我希望它看起來如何),由於某種原因不存在,所以我再次添加它。

Re: 如何根據循環創建 dt 對象的變量名我不太確定您設想的最終輸出應該是什麼,所以我不得不猜測。我發現的一個問題是,當我認為您想要引用“valuesarray [I ]" 將返回“F”或“M”。
您還在 For() 循環中創建了 V 列錶框,稱為 dt_vlist。這就是為什麼您只得到一份結果的原因。每次通過 For() 循環時,ds_vlist 都會重新創建。
在按鈕框的腳本中,您引用了 valuesarray[I]。這裡重要的是,“I”的值是在按鈕按下時評估的。這意味著,無論按下按鈕時 I 的值是多少,都將決定打開哪個文件。因此,我在創建按鈕框時將代碼更改為值中的硬代碼。
最後,您在保存文件的路徑中指定了 //SUMMARY。 不知道是不是你電腦的問題。如果 //SUMMARY 是正確的引用,我相信您需要在SUMMARY之後添加一個\,以向操作系統指示它與文件名之間的分隔
Names Default To Here( 1 );
dt_values = Current Data Table();
dt_valuesarray = {};
Summarize( dt_values, valuesarray = by( :Dis ) );
For( i = 1, i <= N Items( valuesarray ), i++,
dt_values << Select where( :Dis == valuesarray[i] );
mydt = dt_values << Subset( Output Table( "Summary " || valuesarray[i] ), Selected Rows( 1 ), Selected columns only( 0 ) );
Insert Into( dt_valuesarray, mydt );
Current Journal() << Close window( nosave );
dt_valuesarray[i]() << save( "\\SUMMARY\" || valuesarray[i] || ".jmp " );
dt_valuesarray[i]() << journal;
Current Journal() << Save HTML( "\\SUMMARY\" || valuesarray[i] || ".html" );
Current Journal() << Close window( nosave );
);
//------------------ new window
charts = {};
dt_vlist = V List Box();
For( i = 1, i <= N Items( valuesarray ), i++,
eval(parse(
"charts[" || char(i) || "] = Charts_1 = V List Box(
V List Box( dt_valuesarray[i] << get as report() ),
Outline Box( \!"Drill Down Analysis\!", BB = Button Box( \!"Click Here\!", Open( \!"\\SUMMARY\" || valuesarray[i] || ".html\!" ))));" ));
dt_vlist << append( Outline Box( "Summary Data", Outline Box( "Summary Tables", Tab Box( valuesarray[i], charts[i] ) ) ) );
);
dt_tables = New Window( "Tables", dt_vlist );
Re: 如何根據循環創建 dt 對象的變量名你好@txnelson ,
你能支持我嗎?
Re: 如何根據循環創建 dt 對象的變量名@txnelson ,
除了你已經解決的問題,
我正在嘗試在我保存的表格中使用。
我正在使用一個新窗口,每個表都有一個標籤框
問題是:
1. 一張桌子只為我打開一個標籤 - 在我的情況下,它應該是 2 個標籤
2. 我保存時按鈕框沒有打開文件
dt_values = Current Data Table();
dt_valuesarray = {};
Summarize( dt_values, valuesarray = by( :Dis ) );
For( i = 1, i <= N Items( valuesarray ), i++,
dt_values << Select where( :Dis == valuesarray[i] );
mydt = dt_values << Subset(
Output Table( "Summary " || valuesarray[i] ),
Selected Rows( 1 ),
Selected columns only( 0 )
);
Insert Into( dt_valuesarray, mydt );
Current Journal() << Close window( nosave );
dt_valuesarray [i]() << save( "\\Summary "|| valuesarray[i] ||".jmp " );
dt_valuesarray [i]() << journal;
Current Journal() << Save HTML( "\\Summary "|| valuesarray[i] ||" .html" );
Current Journal() << Close window( nosave );
);
//------------------ new window
charts = {};
For( i = 1, i <= N Items( valuesarray), i++,
charts[i] = Charts_1 = V List Box(
V List Box( dt_valuesarray[i] << get as report() ),
Outline Box( "Drill Down Analysis",
BB = Button Box( "Click Here",
Open( "\\Summary "|| dt_valuesarray[i] ".html" )
)
)
);
dt_vlist= V List Box(
Outline Box( "Summary Data",
Outline Box( "Summary Tables",
TabBox( dt_valuesarray[i], charts[i] ) ) )
));
dt_tables = New Window( "Tables", dt_vlist);
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 354px;"><span class="lia-inline-image-display-wrapper" image-alt="Capture.PNG" style="width: 354px;"><img src="https://us.v-cdn.net/6038925/uploads/images/23753i8D6057CAEB44C940/Capture.PNG" role="button" title="Capture.PNG" alt="Capture.PNG" /></span></SPAN>
非常感謝您的及時支持
Re: 如何根據循環創建 dt 對象的變量名偉大的!
非常感謝@txnelson
Re: 如何根據循環創建 dt 對象的變量名這是我處理您嘗試做的事情的方式。
dt_values = Current Data Table();
dt_valuesarray = {};
Summarize( dt_values, valuesarray = by( :Dis ) );
For( i = 1, i <= N Items( valuesarray ), i++,
dt_values << Select where( :Dis == valuesarray[i] );
mydt = dt_values << Subset(
Output Table( "Summary " || valuesarray[i] ),
Selected Rows( 1 ),
Selected columns only( 0 )
);
Insert Into( dt_valuesarray, mydt );
);
show(dt_valuesarray);