如何根据循环创建 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);