我每個月都要產生一些能力報告,內部客戶非常喜歡市場上的功能探索器——而且它真的很棒,為什麼不呢?我的問題是,我需要整理 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() 對我來說是一個非常新的概念。