我每个月都要生成一些能力报告,内部客户非常喜欢市场上的功能探索器——而且它真的很棒,为什么不呢?我的问题是,我需要整理 60 份单独的报告(每列一份)——所以我编写(修改)了这个 JSL,它把选定的报告收集到一个日志中,然后我可以导出为 PDF 文件——一切正常(除了自动关闭窗口选项——我放弃了),但自从我更新到 19 版本后就失败了。错误(至少是第一个错误!)是
访问或评估“报告”时预期的平台参数、错误参数(w)、报告/*******/(w)
在 pathGoesHere\Chooser 和 PDF export v2.jsl 中的第 92 行
我真的很感激一些帮助或指点。
// ===== BEGIN: Select windows and export a single combined PDF (with headers/footers & page breaks) =====
Names Default To Here( 1 );
// -------------------- User Controls --------------------
allowCloseDataTables = 1; // 0 = keep Data Table windows open (safe), 1 = allow closing them
forceCloseNoPrompt = 0; // 1 = Close(..., No Save) for hands‑free; 0 = allow Save prompts (may block)
// -------------------- Summary Counters --------------------
closedCount = 0;
attemptedCount = 0;
failedCount = 0;
skippedDTCount = 0;
skippedJournalCount = 0;
// -------------------- 1) Collect open windows (JMP 18 reliable) --------------------
winRefs = Get Window List(); // list of top-level window handles
winTitles = {};
// Build clean titles for the list (characters only)
For( i = 1, i <= N Items( winRefs ), i++,
w = winRefs[i];
t = "Window " || Char( i );
Try(
t0 = w << Get Window Title;
t = Char( t0 );
If( Is Empty( t ), t = "Window " || Char( i ) );
);
Insert Into( winTitles, t );
);
// -------------------- 2) Dialog: pick windows + optional "close after export" --------------------
selIdx = {};
closeAfter = 0;
New Window( "Select windows to include", <
<MODAL>
0; ), Spacer Box( Size( 12, 0 ) ), Button Box( "Cancel", selIdx = {}; closeAfter = 0; ) ) ) ); If( N Items( selIdx ) == 0, Throw( "No windows selected." ) ); // -------------------- 3) Build a list of Data Table windows (no probing on random windows) -------------------- dtWinRefs = {}; nt = N Table(); For( i = 1, i <= nt, i++, dt = Data Table( i ); Try( dtw = dt << Get Window; // window that hosts this Data Table If( !Is Empty( dtw ), Insert Into( dtWinRefs, dtw ); ); ); ); // -------------------- 4) Build the combined journal with static content -------------------- jnw = New Window( "Combined Report", <
<JOURNAL></JOURNAL></MODAL>
似乎 JMP19 改变了在新窗口中尝试使用 Report 函数时发生的情况:在 JMP18 中,它会返回缺失值;而在 JMP19 中,它会抛出您看到的错误。您可以采取很多措施,但也许像这样的操作就足够了:在第 92 行添加 Try()
原来的:

修改的
rb = Try(Report(w), .);
content = Picture Box(w << Get Picture);
If(!Is Empty(rb),
Try(content = rb << Clone Box); // upgrade to cloned report if possible
);
谢谢你 - 我仍在努力掌握 JSL - Try() 对我来说是一个非常新的概念。